Acabo de intentar esto: necesitaba probar un código de desarrollo en mi servidor local Apache en Windows . Esto fue MUCHO más difícil de lo que debería ser. Pero aquí están los pasos que lograron funcionar después de mucho trabajo ...
Descubrí que mi instalación de Apache viene con lo openssl.exeque es útil. Si no tiene una copia, deberá descargarla. Mi copia estaba en la Apache2\bincarpeta, que es como la menciono a continuación.
Pasos:
Asegúrese de tener permisos de escritura en su carpeta de configuración de Apache
Abra un símbolo del sistema en la Apache2\confcarpeta
Tipo ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Puede dejar todas las preguntas en blanco, excepto:
Frase de contraseña PEM: una contraseña temporal como "contraseña"
Nombre común: el nombre de host de su servidor
Cuando eso se complete, escriba ..\bin\openssl rsa -in blarg.pem -out blarg.key
Genere su certificado autofirmado escribiendo: ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Abra el conf\httpd.confarchivo de Apache y asegúrese de que el módulo SSL esté habilitado; no debe haber hash al comienzo de esta línea: LoadModule ssl_module modules/mod_ssl.so
Algunas instalaciones de Apache colocan la configuración SSL en un archivo separado. Si es así, asegúrese de que se incluya el archivo conf SSL. En mi caso tuve que descomentar esta línea: Include conf/extra/httpd-ssl.conf
En la configuración SSL httpd-ssl.conftuve que actualizar las siguientes líneas:
Actualizar SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)" a SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)" (Los corchetes en la ruta confunden el módulo, por lo que debemos escapar de ellos)
DocumentRoot - configura esto en la carpeta para tus archivos web
ServerName - el nombre de host del servidor
SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Reinicia Apache.
Intenta cargar https://localhost/en tu navegador.
Espero que hayas llegado hasta aquí. Siéntase libre de actualizar esta publicación con cualquier otra información útil.
(Capturas de pantalla cortesía de Neil Obremski y su útil artículo , aunque ahora bastante desactualizadas).
Gracias. También tuve que editar las directivas ErrorLog, TransferLog y CustomLog a rutas válidas, de lo contrario Apache no se iniciaría.
Tamlyn
1
Por alguna razón, las instrucciones ya no funcionan o son incompletas
Jacobian
66
Tuve que descomentar lo siguiente también en mi httpd.conf para que funcione: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
Hice dos pasos más para hacerlo funcionar, agregue el módulo LoadModule socache_shmcb_module modules / mod_socache_shmcb.so y en httpd-ssl.conf corrijo la ruta de registro ssl en la línea 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .
55
Para generar los archivos .pem y .key, tuve que establecer 2 variables de entorno en el paso 2: establecer OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere
57
Yo uso ngrok ( https://ngrok.com/ ) para esto. ngrok es una herramienta de línea de comando y crea un túnel para localhost. Crea conexiones http y https. Después de descargarlo, se debe ejecutar el siguiente comando:
ngrok http 80
(En la versión 2, la sintaxis es: ngrok http 80. En la versión 2, cualquier puerto puede ser tunelizado).
@sudip, ¿El código de código abierto de ngrok funciona de tal manera que podamos alojarlo en nuestro propio servidor sin modificaciones? Si no es así, es bastante espectacular porque no está bien redirigir las solicitudes de los usuarios a un host externo como ngrok.
Pacerier
2
@Pacerier No tengo la intención de usarlo en el servidor. Lo uso en localhost (porque mi proveedor de red me da una IP dinámica). Lo usé por primera vez para las pruebas de IPN de PayPal y funcionó perfectamente. Me pregunto por qué alguien lo usará en el servidor y con qué propósito.
sudip
@sudip, el propósito es obvio, permitir que el código que funciona en HTTP también funcione con HTTPS sin necesidad de codificación adicional.
Pacerier
1
Aunque esto es útil, parece increíblemente inseguro permitir el acceso a su máquina de desarrollo a Internet abierto. Usar algo como esto lo despediría de un empleador consciente de la seguridad.
Andy M
@Yum Yum Yum . Antes era completamente gratuito en V 1. Pero, los puertos http y https siguen siendo gratuitos en v 2 (no sé si hay alguna restricción de puerto si hay un plan gratuito). Consulte el plan gratuito aquí: ngrok.com/product#pricing
sudip
24
aquí es la forma más sencilla de hacer esto
primero copie estos archivos server.crt y server.key (encontrar en el archivo adjunto) en su directorio apache / conf / ssl
luego abra el archivo httpd.conf y agregue la siguiente línea
Tuve que habilitar también el módulo LoadModule ssl_module libexec / apache2 / mod_ssl.so en (/etc/apache2/httpd.conf)
Alexey
17
Me pregunto qué tan seguro / peligroso es descargar archivos * .crt * .key de fuentes no confiables en lugar de generar los suyos.
Petr Peller
44
@PetrPeller estamos configurando https para el desarrollo local, entonces, ¿por qué preguntarse por lo seguro / peligroso?
Anil Gupta
77
Una explicación de cómo generar esos archivos sería genial. Porque descargar archivos de una fuente desconocida es una mala práctica, pero también porque ese tipo de enlaces se romperán en algún momento.
Para proteger la seguridad de la información que se envía desde y hacia su servidor web, es una buena idea habilitar el cifrado de la comunicación entre los clientes y el servidor. Esto a menudo se llama SSL .
Así que configuremos HTTPS con un certificado autofirmado en Apache2. Voy a enumerar los pasos que debes seguir:
Instale el servidor web apache2 en su máquina. Para la máquina Linux, abra la terminal y escriba
sudo apt-get install apache2
Después de una instalación exitosa, verifique el estado del servicio apache2 ejecutando el comando
Verifique que obtenga la página predeterminada para apache2 como esta.
Para cifrar una conexión web necesitamos un certificado de CA (autoridad de certificación) o podemos usar certificados autofirmados. Creemos un certificado autofirmado con el siguiente comando.
Por favor complete la información como se muestra a continuación.
mykey.key y mycert.pem deben crearse en su directorio de trabajo actual.
Sería bueno si moviéramos certificados y claves a un lugar común y será fácil para el servidor web apache2 encontrarlos. Así que ejecutemos los siguientes comandos
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
Habilitemos el modo SSL en su servidor
sudo a2enmod ssl
Debería salir así
Configuremos apache2 para usar el certificado autofirmado y la clave que hemos generado anteriormente.
sudo vi /etc/apache2/sites-available/default-ssl.conf
Busque estas dos líneas y reemplácelas con su certificado y rutas clave.
Inicial
Final
Habilitar el sitio
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
Reinicie el servicio apache2
sudo service apache2 restart
Verifique el servidor web apache2 en HTTPS. Abra su navegador nuevamente y escriba
Debería mostrar algo como esto con una advertencia de que la página que está a punto de ver no es segura porque hemos configurado el servidor con un certificado autofirmado.
Felicitaciones, ha configurado su apache2 con el punto final HTTPS, ahora haga clic en avanzado -> agregar excepción -> confirmar excepción de seguridad , verá nuevamente la página predeterminada.
Prefiero no editar ningún archivo de configuración si puedo, así que lo dejé default-ssl.confcomo está. Estaba a punto de cambiar el nombre mycertde ssl-cert-snakeoil, pero este archivo ya existe por lo que acabo de utilizar eso! Así que pude omitir de manera segura dos pasos en Debian.
Rolf
@Rolf Estoy de acuerdo con usted, pero en producción, siempre es el caso, use un nuevo certificado y clave. Entonces, solo para mostrar cómo se pueden crear, he agregado 2 pasos adicionales para Debian. Gracias :)
Dinesh Kumar
9
Windows + Apache 2.4, por ejemplo:
descomente ssl_module en su httpd.confarchivo.
LoadModule ssl_module modules/mod_ssl.so
escuche el puerto 443 al igual que el puerto 80 en su httpd.confarchivo.
Listen 80
Listen 443
descomentar Incluir hosts virtuales en su httpd.confarchivo.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
agregue VirtualHost en su conf/extra/httpd-vhosts.conf
<VirtualHost _default_:443>
DocumentRoot "D:/www" #your site directory path
ServerName localhost
#ServerAlias localhost.com localhost2.com
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
<Directory "D:/www">
Options -Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
solo el número de puerto 443y las SSL......líneas son diferentes de la configuración http normal.
guarde su archivo de configuración y reinicie el servicio apache. entonces puedes visitar https: // localhost /
El navegador web le advertirá que no es seguro la primera vez, simplemente elija continuar.
Esto me ha funcionado en XP Home, Apache 2.4. Copié los 2 archivos de certificado de la publicación anterior (por Anil Gupta). Mod_ssl no comentado e incluido httpd-vhosts.conf en httpd.conf, agregada la directiva VirtualHost de Anil Gupta (con algunas rutas ajustadas) en httpd-vhosts.conf.
jogi99
7
En realidad es bastante fácil, suponiendo que tenga una instalación de OpenSL a mano. (¿En qué plataforma estás?)
Sin embargo, el resumen ejecutivo es que debe crear un certificado autofirmado. Como está ejecutando apache para localhost presumiblemente para desarrollo (es decir, no un servidor web público), sabrá que puede confiar en el certificado autofirmado y puede ignorar las advertencias que su navegador le lanzará.
Hola, estoy trabajando en el sistema operativo Windows. Y en cuanto al certificado autofirmado, ¿tengo que descargarlo o por algún otro medio?
KennC.
3
No Hará el certificado autofirmado usted mismo. ¿Tiene la configuración apache httpd + ssl? Necesitará el SSL para hacer esto. Este sitio: rubayathasan.com/tutorial/apache-ssl-on-windows tiene buena información sobre cómo iniciar ssl en Windows. Harás un trabajo de línea de comandos, pero eso es bueno para ti de todos modos. :-)
Pete Clark el
3
Los enlaces están muertos :(
kpuccino 01 de
Sí, parece estar muerto. Esa es la Internet para ti ... Sin embargo, el enlace a CentOS Wiki a continuación al que hace referencia @kayakinkoder también es bueno: wiki.centos.org/HowTos/Https Si estás en una Mac, este artículo también parece razonable: esencia. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4
Esto debería funcionar Ubuntu, Mint similar con Apache2
Y necesitas correr systemctl reload apache2después sudo a2ensite default-ssl.conf.
hasta el
2
Actualización 2019
Estoy publicando esta respuesta ya que tuve problemas con esto y Chrome actualizó su seguridad al requerir Nombre alternativo del sujeto que muchas publicaciones no tienen, ya que no era necesario cuando se publicaron como respuesta. Supongo que WAMP ya está instalado.
Aunque esta parte es opcional, facilita la ejecución posterior de comandos. Si omite este paso, tendrá que proporcionar la ruta completa a openssl.exe donde ejecutará el comando. Si prefiere configurarlo, actualice la ruta openssl.exe en Variables de entorno.
Variables de entorno -> Variables del sistema -> Ruta -> Editar -> Nuevo -> c: \ Archivos de programa \ OpenSSL-Win64 \ bin
PASO 3
Cree una carpeta llamada "clave" en el c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/directorio.
Cree un archivo de configuración para su CA MyCompanyCA.cnf con contenido (puede cambiarlo según sus necesidades):
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, fully qualified host name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ root_ca ]
basicConstraints = critical, CA:true
Cree el archivo de configuración de extensiones MyCompanyLocalhost.ext para su certificado de servidor web:
Si esto funciona. Utilicé los pasos 1 a 3 de StephanieQ para generar el certificado y luego "openssl x509 -req -in server.csr -signkey server.key -out server.crt" para generar el archivo * .crt con cygwin.
Puede especificar una solución personalizada, subdominio.
Puede auto hospedarlo, para que pueda usar su propio dominio y estar preparado para el futuro, incluso si el servicio deja de funcionar.
No podía creer cuando encontré este servicio. Ofrece todo y es el más fácil de usar. Si hubiera una herramienta tan fácil e indolora para cada problema ...
Ejecutando Apache en Windows 10 aquí. No pude hacer que Chrome confiara en el certificado hecho en la respuesta superior de Simon. Lo que terminé haciendo fue usar PowerShell para generar un certificado autofirmado.
Paso 1 - Generar certificado autofirmado
En PowerShell New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"1
Paso 2: configurar y exportar certificado
Escriba Certificateen la barra de búsqueda de Windows, haga clic en elManage Computer Certificates elemento del panel de control que se sugiere.
Desde el programa de gestión de certificados que aparece (certlm), ahora debería ver una localhostclave debajo Personal >> Certificates.
Copié este certificado en Trusted Root Certification Authorities. Seré sincero porque no estoy seguro de si eso es necesario.
Al seleccionar el certificado recién copiado, haga doble clic en él (el certificado localhost). Desde el modal Certificado, haga clic en la Detailspestaña y luego enCopy to File... botón.
Aparecerá el Asistente de exportación, elegí exportar la clave privada, haga clic en siguiente. También elegí hacerlo Export all extended properties(nuevamente, no estoy seguro de si eso era necesario). Elegí usar una contraseña simple ( pass) y el cifrado predeterminado. Elija una carpeta para exportar y asigne un nombre al archivo. Siempre puede mover y cambiar el nombre del archivo si es necesario. En aras de la simplicidad, copiemoslo en su carpeta conf bajo su instalación de Apache (en mi caso:) y nombremos C:\apache\confel archivo myCert(el archivo resultante será un .pfxarchivo)
Paso 3: convierta el .pfxarchivo para usar con Apache
Desde aquí, básicamente seguí el tutorial aquí , pero agregaré instrucciones aquí (ajustadas para nuestra configuración) en caso de que ese sitio se caiga.
Abra su símbolo del sistema en la /apache/conf/carpeta
Ejecute los siguientes comandos: Nota: Esto supone que tiene openssl.exeen la bincarpeta en la carpeta raíz de Apache (esto debería ser estándar / predeterminado)
Esto le pedirá una contraseña, ingrese lo que ingresó para el Paso 2 cuando exportó el .pfxarchivo. En mi caso, esto es pass. Ingresé la misma contraseña para la frase PEM y nuevamente para verificar. Esto creará un nuevo archivo llamado privateKey.pemen su carpeta conf.
Nuevamente se le pedirá una contraseña ( Enter pass phrase for privateKey.pem:), use la contraseña que configuró privateKey.pem. (En mi caso, pass)
Debería ver un mensaje que dice writing RSA keyy un nuevo archivo llamado private.pemen su conf/carpeta. Este será su SSLCertificateKeyFile.
Ahora para generar el correspondiente certificado de servidor. Correr:
Esto le pedirá una contraseña, ingrese lo que ingresó para el Paso 2 cuando exportó el .pfxarchivo. Ingrese y ahora tendrá un archivo llamado EntrustCert.pemen su confcarpeta. Este es su SSLCertificateFile
Paso 4 - Configurar httpd.conf
Utilice los nuevos archivos creados como clave y certificado de su servidor. ¡Asegúrese de cambiar la raíz de su documento a donde están sus archivos!
Descomentar Include conf/extra/httpd-ssl.conf(NOTA: ¡Asegúrese de que es donde está el archivo!)
También tengo incluidas las bibliotecas curl y open ssl:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Estos módulos no deberían ser necesarios, pero notaré que los tengo habilitados: LoadModule rewrite_module modules/mod_rewrite.so LoadModule filter_module modules/mod_filter.so LoadModule deflate_module modules/mod_deflate.so
Paso 5 - Configuración httpd-ssl.conf
En la extra/carpeta en la conf/carpeta debería ver un archivo llamadohttpd-ssl.conf .
5a. Cambiar elDocumentRoot : cambie el DocumentRootvalor predeterminado al directorio donde se encuentran sus archivos.
5c. Cambiar elSSLCertificateFile
Cambiar SSLCertificateFileel valor predeterminado ( ${SRVROOT}/conf/server.crt) a${SRVROOT}/conf/EntrustCert.pem
5c. Cambiar elSSLCertificateKeyFile
Cambiar SSLCertificateKeyFileel valor predeterminado ( ${SRVROOT}/conf/server.key) a${SRVROOT}/conf/private.pem
Todos juntos, en la <VirtualHost _default_:443>etiqueta.
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"
Reiniciar Apache
¡Después de hacer estos cambios, debería poder reiniciar Apache y navegar a https: // localhost sin una advertencia de seguridad y un pequeño candado!
y acceda a la página en cualquier dispositivo conectado a su red. Esto es muy útil en casos como "tienes que probar la API de GeoLocation HTML5 en un dispositivo móvil y Chrome restringe la API solo en conexiones seguras".
Me gustaría agregar algo a la muy buena respuesta de @CodeWarrior, que funciona perfectamente en Chrome, pero para Firefox necesita un paso adicional.
Como Firefox no aplica los certificados de CA que Windows hace de forma predeterminada, debe continuar about:config, desplácese hacia abajo parasecurity.enterprise_roots.enabled y cambiarlo a verdadero.
Ahora su certificado debería verse como válido también en Firefox.
Por supuesto, esto es solo para fines de desarrollo, ya que la confianza SSL es una preocupación de seguridad crítica y cambie esta configuración solo si conoce las implicaciones.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
Ingrese su subdominio y número de puerto yhttps://youruniquesubdomain.serveo.net
Respuestas:
Acabo de intentar esto: necesitaba probar un código de desarrollo en mi servidor local Apache en Windows . Esto fue MUCHO más difícil de lo que debería ser. Pero aquí están los pasos que lograron funcionar después de mucho trabajo ...
Descubrí que mi instalación de Apache viene con lo
openssl.exe
que es útil. Si no tiene una copia, deberá descargarla. Mi copia estaba en laApache2\bin
carpeta, que es como la menciono a continuación.Pasos:
Apache2\conf
carpeta..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Puede dejar todas las preguntas en blanco, excepto:
Cuando eso se complete, escriba
..\bin\openssl rsa -in blarg.pem -out blarg.key
Genere su certificado autofirmado escribiendo:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Abra el
conf\httpd.conf
archivo de Apache y asegúrese de que el módulo SSL esté habilitado; no debe haber hash al comienzo de esta línea:LoadModule ssl_module modules/mod_ssl.so
Algunas instalaciones de Apache colocan la configuración SSL en un archivo separado. Si es así, asegúrese de que se incluya el archivo conf SSL. En mi caso tuve que descomentar esta línea:
Include conf/extra/httpd-ssl.conf
En la configuración SSL
httpd-ssl.conf
tuve que actualizar las siguientes líneas:SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
a
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
(Los corchetes en la ruta confunden el módulo, por lo que debemos escapar de ellos)
DocumentRoot
- configura esto en la carpeta para tus archivos webServerName
- el nombre de host del servidorSSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Reinicia Apache.
https://localhost/
en tu navegador.Espero que hayas llegado hasta aquí. Siéntase libre de actualizar esta publicación con cualquier otra información útil.
(Capturas de pantalla cortesía de Neil Obremski y su útil artículo , aunque ahora bastante desactualizadas).
fuente
Yo uso ngrok ( https://ngrok.com/ ) para esto. ngrok es una herramienta de línea de comando y crea un túnel para localhost. Crea conexiones http y https. Después de descargarlo, se debe ejecutar el siguiente comando:
(En la versión 2, la sintaxis es: ngrok http 80. En la versión 2, cualquier puerto puede ser tunelizado).
Después de unos segundos, dará dos URL:
Ahora, ambas URL apuntan al localhost.
fuente
aquí es la forma más sencilla de hacer esto
primero copie estos archivos server.crt y server.key (encontrar en el archivo adjunto) en su directorio apache / conf / ssl
luego abra el archivo httpd.conf y agregue la siguiente línea
fuente
Para proteger la seguridad de la información que se envía desde y hacia su servidor web, es una buena idea habilitar el cifrado de la comunicación entre los clientes y el servidor. Esto a menudo se llama SSL .
Así que configuremos HTTPS con un certificado autofirmado en Apache2. Voy a enumerar los pasos que debes seguir:
Debería salir
Verifique que obtenga la página predeterminada para apache2 como esta.
Por favor complete la información como se muestra a continuación.
mykey.key y mycert.pem deben crearse en su directorio de trabajo actual.
Debería salir así
Busque estas dos líneas y reemplácelas con su certificado y rutas clave.
Inicial
Final
Debería mostrar algo como esto con una advertencia de que la página que está a punto de ver no es segura porque hemos configurado el servidor con un certificado autofirmado.
fuente
default-ssl.conf
como está. Estaba a punto de cambiar el nombremycert
dessl-cert-snakeoil
, pero este archivo ya existe por lo que acabo de utilizar eso! Así que pude omitir de manera segura dos pasos en Debian.Windows + Apache 2.4, por ejemplo:
descomente ssl_module en su
httpd.conf
archivo.escuche el puerto 443 al igual que el puerto 80 en su
httpd.conf
archivo.descomentar Incluir hosts virtuales en su
httpd.conf
archivo.agregue VirtualHost en su
conf/extra/httpd-vhosts.conf
solo el número de puerto
443
y lasSSL......
líneas son diferentes de la configuración http normal.guarde su archivo de configuración y reinicie el servicio apache. entonces puedes visitar https: // localhost /
El navegador web le advertirá que no es seguro la primera vez, simplemente elija continuar.
fuente
En realidad es bastante fácil, suponiendo que tenga una instalación de OpenSL a mano. (¿En qué plataforma estás?)
Asumiendo que está en Linux / Solaris / Mac OS / X, el Mini-CÓMO SSL / TLS de Apache de Van tiene un excelente tutorial que no reproduciré aquí.
Sin embargo, el resumen ejecutivo es que debe crear un certificado autofirmado. Como está ejecutando apache para localhost presumiblemente para desarrollo (es decir, no un servidor web público), sabrá que puede confiar en el certificado autofirmado y puede ignorar las advertencias que su navegador le lanzará.
fuente
Esto debería funcionar Ubuntu, Mint similar con Apache2
Es una buena guía, así que siguiendo esto
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
y dejando su ssl.conf así o similar
puedes conseguirlo.
Espero que esta ayuda para linuxer
fuente
Es muy simple,
solo ejecuta los siguientes comandos
Eso es todo, ya terminaste.
Si desea forzar SSL (para usar https siempre), edite el archivo:
y agrega esta línea
luego reinicie nuevamente
fuente
systemctl reload apache2
despuéssudo a2ensite default-ssl.conf
.Actualización 2019
Estoy publicando esta respuesta ya que tuve problemas con esto y Chrome actualizó su seguridad al requerir Nombre alternativo del sujeto que muchas publicaciones no tienen, ya que no era necesario cuando se publicaron como respuesta. Supongo que WAMP ya está instalado.
PASO 1
Descargue OpenSSL Light e instálelo
PASO 2 (Opcional)
Aunque esta parte es opcional, facilita la ejecución posterior de comandos. Si omite este paso, tendrá que proporcionar la ruta completa a openssl.exe donde ejecutará el comando. Si prefiere configurarlo, actualice la ruta openssl.exe en Variables de entorno.
PASO 3
Cree una carpeta llamada "clave" en el
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
directorio.Cree un archivo de configuración para su CA MyCompanyCA.cnf con contenido (puede cambiarlo según sus necesidades):
Cree el archivo de configuración de extensiones MyCompanyLocalhost.ext para su certificado de servidor web:
PASO 4
Ejecute estos comandos en el orden dado para generar la clave y los certificados:
Como resultado, tendrá los archivos MyCompanyCA.cer , MyCompanyLocalhost.cer y MyCompanyLocalhost.pvk .
PASO 5
Instale MyCompanyCA.cer debajo
Para instalar MyCompanyLocalhost.cer simplemente haga doble clic en él.
PASO 6
Abra
c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
y descomente (elimine el #) las siguientes 3 líneas:PASO 7
Abra
c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
y cambie todos los parámetros a los que se muestran a continuación:Nota: esta es la parte difícil. Si comete un pequeño error al editar este archivo, SSL no funcionará. Haga una copia antes de editarlo.
PASO 8
Reinicie Wamp y Chrome. Localhost ahora es seguro: https: // localhost
fuente
Este HowTo for CentOS fue fácil de seguir y solo tardó unos 5 minutos: https://wiki.centos.org/HowTos/Https
No detallaré cada paso aquí, pero los pasos principales son:
1.) Instale el módulo openssl para apache, si aún no está instalado
2.) Generar un certificado autofirmado
- En este punto, debería poder visitar https: // localhost éxito
3.) Configure un host virtual si es necesario
fuente
Esto funcionó en Windows 10 con Apache24:
1 - Agregue esto al final de
C:/Apache24/conf/httpd.conf
2 - Agregue los archivos
server.crt
yserver.key
en elC:/Apache24/conf/ssl
carpeta. Vea otras respuestas en esta página para encontrar esos 2 archivos.¡Eso es!
fuente
tl; dr
Y se puede acceder a su entorno local desde https://youruniquesubdomain.serveo.net
Serveo es el mejor
No podía creer cuando encontré este servicio. Ofrece todo y es el más fácil de usar. Si hubiera una herramienta tan fácil e indolora para cada problema ...
fuente
Ejecutando Apache en Windows 10 aquí. No pude hacer que Chrome confiara en el certificado hecho en la respuesta superior de Simon. Lo que terminé haciendo fue usar PowerShell para generar un certificado autofirmado.
Paso 1 - Generar certificado autofirmado
En PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1Paso 2: configurar y exportar certificado
Escriba
Certificate
en la barra de búsqueda de Windows, haga clic en elManage Computer Certificates
elemento del panel de control que se sugiere.Desde el programa de gestión de certificados que aparece (certlm), ahora debería ver una
localhost
clave debajoPersonal >> Certificates
.Copié este certificado en
Trusted Root Certification Authorities
. Seré sincero porque no estoy seguro de si eso es necesario.Al seleccionar el certificado recién copiado, haga doble clic en él (el certificado localhost). Desde el modal Certificado, haga clic en la
Details
pestaña y luego enCopy to File...
botón.Aparecerá el Asistente de exportación, elegí exportar la clave privada, haga clic en siguiente. También elegí hacerlo
Export all extended properties
(nuevamente, no estoy seguro de si eso era necesario). Elegí usar una contraseña simple (pass
) y el cifrado predeterminado. Elija una carpeta para exportar y asigne un nombre al archivo. Siempre puede mover y cambiar el nombre del archivo si es necesario. En aras de la simplicidad, copiemoslo en su carpeta conf bajo su instalación de Apache (en mi caso:) y nombremosC:\apache\conf
el archivomyCert
(el archivo resultante será un.pfx
archivo)Paso 3: convierta el
.pfx
archivo para usar con ApacheDesde aquí, básicamente seguí el tutorial aquí , pero agregaré instrucciones aquí (ajustadas para nuestra configuración) en caso de que ese sitio se caiga.
Abra su símbolo del sistema en la
/apache/conf/
carpetaEjecute los siguientes comandos: Nota: Esto supone que tiene
openssl.exe
en labin
carpeta en la carpeta raíz de Apache (esto debería ser estándar / predeterminado)Esto le pedirá una contraseña, ingrese lo que ingresó para el Paso 2 cuando exportó el
.pfx
archivo. En mi caso, esto espass
. Ingresé la misma contraseña para la frase PEM y nuevamente para verificar. Esto creará un nuevo archivo llamadoprivateKey.pem
en su carpeta conf.Entonces corre
Nuevamente se le pedirá una contraseña (
Enter pass phrase for privateKey.pem:
), use la contraseña que configuróprivateKey.pem
. (En mi caso,pass
)Debería ver un mensaje que dice
writing RSA key
y un nuevo archivo llamadoprivate.pem
en suconf/
carpeta. Este será su SSLCertificateKeyFile.Ahora para generar el correspondiente certificado de servidor. Correr:
Esto le pedirá una contraseña, ingrese lo que ingresó para el Paso 2 cuando exportó el
.pfx
archivo. Ingrese y ahora tendrá un archivo llamadoEntrustCert.pem
en suconf
carpeta. Este es su SSLCertificateFilePaso 4 - Configurar
httpd.conf
Utilice los nuevos archivos creados como clave y certificado de su servidor. ¡Asegúrese de cambiar la raíz de su documento a donde están sus archivos!
También en
httpd.conf
:LoadModule ssl_module modules/mod_ssl.so
esté comentado (no#
al frente)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(NOTA: ¡Asegúrese de que es donde está el archivo!)También tengo incluidas las bibliotecas curl y open ssl:
Estos módulos no deberían ser necesarios, pero notaré que los tengo habilitados:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
Paso 5 - Configuración
httpd-ssl.conf
En la
extra/
carpeta en laconf/
carpeta debería ver un archivo llamadohttpd-ssl.conf
.5a. Cambiar el
DocumentRoot
: cambie elDocumentRoot
valor predeterminado al directorio donde se encuentran sus archivos.5b. Cambiar el
ServerName
: cambia elServerName
valor predeterminado (algo parecidowww.example.com:443
) alocalhost:443
5c. Cambiar el
SSLCertificateFile
Cambiar
SSLCertificateFile
el valor predeterminado (${SRVROOT}/conf/server.crt
) a${SRVROOT}/conf/EntrustCert.pem
5c. Cambiar el
SSLCertificateKeyFile
Cambiar
SSLCertificateKeyFile
el valor predeterminado (${SRVROOT}/conf/server.key
) a${SRVROOT}/conf/private.pem
Todos juntos, en la
<VirtualHost _default_:443>
etiqueta.Reiniciar Apache
¡Después de hacer estos cambios, debería poder reiniciar Apache y navegar a https: // localhost sin una advertencia de seguridad y un pequeño candado!
¡Espero que esto ayude a alguien! 😊
Fuentes:
1.) Respuesta de Auri Rahimzadeh sobre la creación de un certificado autofirmado
2.) Entrust Datacard - ¿Cómo convierto un .pfx para usarlo con un servidor Apache?
fuente
Otro método simple es usar Python Server en Ubuntu.
Genere server.xml con el siguiente comando en la terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Nota: Suponiendo que tiene openssl instalado.
Guarde el siguiente código en un archivo con el nombre
simple-https-server.py
en cualquier directorio en el que desee ejecutar el servidor.Ejecute el servidor desde la terminal:
python simple-https-server.py
Visita la página en:
https://localhost:4443
Notas extra :
Puedes cambiar el puerto en el
simple-https-server.py
archivo en líneahttpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Puede cambiar
localhost
su IP en la misma línea de arriba:httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
y acceda a la página en cualquier dispositivo conectado a su red. Esto es muy útil en casos como "tienes que probar la API de GeoLocation HTML5 en un dispositivo móvil y Chrome restringe la API solo en conexiones seguras".
Gist: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
fuente
Para aquellos que usan macOS, esta es una gran guía https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions para configurar su entorno de desarrollo web local. En su tercera parte https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller explica cómo configurar apache con un certificado autofirmado:
Este es el comando de teclado:
Pero hay algunos pasos que debes seguir, así que échale un vistazo y ¡buena suerte! ;)
fuente
Me gustaría agregar algo a la muy buena respuesta de @CodeWarrior, que funciona perfectamente en Chrome, pero para Firefox necesita un paso adicional.
Como Firefox no aplica los certificados de CA que Windows hace de forma predeterminada, debe continuar
about:config
, desplácese hacia abajo parasecurity.enterprise_roots.enabled
y cambiarlo a verdadero.Ahora su certificado debería verse como válido también en Firefox.
Por supuesto, esto es solo para fines de desarrollo, ya que la confianza SSL es una preocupación de seguridad crítica y cambie esta configuración solo si conoce las implicaciones.
fuente