¿Cómo permito HTTPS para Apache en localhost?

Respuestas:

135

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:

  1. Asegúrese de tener permisos de escritura en su carpeta de configuración de Apache
  2. Abra un símbolo del sistema en la Apache2\confcarpeta
  3. Tipo
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. 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

  5. Cuando eso se complete, escriba
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Genere su certificado autofirmado escribiendo:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. 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

  8. 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

  9. 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"

  10. Reinicia Apache.

  11. 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).

Simon
fuente
2
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).

Después de unos segundos, dará dos URL:

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

Ahora, ambas URL apuntan al localhost.

sudip
fuente
1
@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

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/wamp/www"  #your wamp www root dir
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
    SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>
Anil Gupta
fuente
3
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.
Stephan Vierkant
2
Este tutorial está bien digitalocean.com/community/tutorials/…
Dhiraj
11

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

sudo service apache2 status

Debería salir

estado del servicio apache2

  • Navega al navegador y escribe

http: // localhost: 80

Verifique que obtenga la página predeterminada para apache2 como esta.

salida predeterminada de apache2

  • 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.

openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes

Por favor complete la información como se muestra a continuación.

crear certificado autofirmado con openssl

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í

habilitar ssl

  • 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

default-conf

Final

después de los cambios de configuración

  • 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

https: // localhost: 443

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.

ingrese la descripción de la imagen aquí

  • 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.

página después de agregar una excepción

Dinesh Kumar
fuente
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:

  1. descomente ssl_module en su httpd.confarchivo.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. escuche el puerto 443 al igual que el puerto 80 en su httpd.confarchivo.

    Listen 80
    Listen 443
    
  3. descomentar Incluir hosts virtuales en su httpd.confarchivo.

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. 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.

cuixiping
fuente
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?)

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á.

Pete Clark
fuente
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

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

<VirtualHost _default_:443>
        ServerAdmin [email protected]
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

puedes conseguirlo.

Espero que esta ayuda para linuxer

ackuser
fuente
2

Es muy simple,

solo ejecuta los siguientes comandos

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Eso es todo, ya terminaste.

Si desea forzar SSL (para usar https siempre), edite el archivo:

sudo nano /etc/apache2/sites-available/000-default.conf

y agrega esta línea

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

luego reinicie nuevamente

sudo service apache2 restart
Moh .S
fuente
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.

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.

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:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com


PASO 4

Ejecute estos comandos en el orden dado para generar la clave y los certificados:

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

Como resultado, tendrá los archivos MyCompanyCA.cer , MyCompanyLocalhost.cer y MyCompanyLocalhost.pvk .


PASO 5

Instale MyCompanyCA.cer debajo

Panel de control -> Administrar certificados de usuario -> Autoridades de certificación raíz de confianza -> Certificados

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.confy descomente (elimine el #) las siguientes 3 líneas:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so


PASO 7

Abra c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confy cambie todos los parámetros a los que se muestran a continuación:

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

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

CodeWarrior
fuente
1

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

KayakinKoder
fuente
1

Esto funcionó en Windows 10 con Apache24:

1 - Agregue esto al final de C:/Apache24/conf/httpd.conf

Listen 443
<VirtualHost *:443>
    DocumentRoot "C:/Apache24/htdocs"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>

2 - Agregue los archivos server.crty server.keyen elC:/Apache24/conf/ssl carpeta. Vea otras respuestas en esta página para encontrar esos 2 archivos.

¡Eso es!

jogi99
fuente
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.
b3wii
1

tl; dr

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

Y se puede acceder a su entorno local desde https://youruniquesubdomain.serveo.net

Serveo es el mejor

  • Sin registro
  • No instalar
  • Tiene HTTPS
  • Accesible en todo el mundo.
  • 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 ...

totymedli
fuente
1

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)

..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem

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.

Entonces corre

..\bin\openssl rsa -in privateKey.pem -out private.pem

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:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

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!

ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<VirtualHost _default_:443>
  ServerName localhost:443
  DocumentRoot ${SRVROOT}/htdocs/MYSITE
  SSLEngine on
  SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
  SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>

También en httpd.conf:

  • Asegúrese de que no LoadModule ssl_module modules/mod_ssl.soesté comentado (no #al frente)
  • Descomentar LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • Descomentar LoadModule http2_module modules/mod_http2.so
  • 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.

5b. Cambiar elServerName : cambia el ServerNamevalor predeterminado (algo parecido www.example.com:443) alocalhost:443

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!

Localhost asegurado

¡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?

StephanieQ
fuente
0

Otro método simple es usar Python Server en Ubuntu.

  1. 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.

  2. Guarde el siguiente código en un archivo con el nombre simple-https-server.pyen cualquier directorio en el que desee ejecutar el servidor.

    import BaseHTTPServer, SimpleHTTPServer
    import ssl
    
    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
    httpd.serve_forever()
    
  3. Ejecute el servidor desde la terminal:

    python simple-https-server.py

  4. Visita la página en:

    https://localhost:4443

Notas extra :

  1. Puedes cambiar el puerto en el simple-https-server.pyarchivo en línea

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. Puede cambiar localhostsu 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/

Asim KT
fuente
0

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:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

Pero hay algunos pasos que debes seguir, así que échale un vistazo y ¡buena suerte! ;)

tiomno
fuente
0

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.

RDev
fuente