apache - habilitar - instalar certificado ssl wamp
¿Cómo permito HTTPS para Apache en localhost? (12)
Acabo de intentar esto - Necesitaba probar algún código de desarrollo en mi localhost Apache en Windows . Esto fue WAAAY más difícil de lo que debería ser. Pero aquí están los pasos que lograron funcionar después de mucho hairpulling ...
Descubrí que mi instalación Apache viene con openssl.exe
que es útil. Si no tiene una copia, deberá descargarla. Mi copia estaba en la carpeta Apache2/bin
que es la referencia a continuación.
Pasos:
- Asegúrese de tener permisos de escritura en su carpeta de Apache conf
- Abra un símbolo del sistema en la carpeta
Apache2/conf
- 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 termine, 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 archivo
conf/httpd.conf
Apache y asegúrese de que el módulo SSL esté habilitado; no debe haber ningún hash al inicio de esta línea:
LoadModule ssl_module modules/mod_ssl.so
Algunas instalaciones Apache colocan la configuración de SSL en un archivo separado. De ser así, asegúrese de que se esté incluyendo el archivo SSL conf. En mi caso, tuve que descomentar esta línea:
Include conf/extra/httpd-ssl.conf
En la configuración de SSL
httpd-ssl.conf
tuve 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
: establezca esto en la carpeta de sus archivos web -
ServerName
- el nombre de host del servidor -
SSLCertificateFile "conf/blarg.cert"
-
SSLCertificateKeyFile "conf/blarg.key"
- Actualizar
Reinicie Apache.
- Intenta cargar
https://localhost/
en tu navegador.
Espero que hayas llegado tan lejos. 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 article , aunque ahora bastante desactualizado).
Me pidieron que configurara HTTPS con un certificado autofirmado en Apache en localhost, pero ¿cómo hago eso? No tengo ninguna idea.
En realidad es bastante fácil, suponiendo que tenga una instalación de openssl a mano. (¿En qué plataforma estás?)
Suponiendo que esté en Linux / Solaris / Mac OS / x, el mini-HOWTO Apache SSL / TLS 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 como un servidor web público), sabrá que puede confiar en el certificado autofirmado y puede ignorar las advertencias que su navegador le lanzará.
Es muy sencillo,
solo ejecuta los siguientes comandos
sudo a2enmod ssl
sudo service apache2 restart
sudo a2ensite default-ssl.conf
Eso es todo, has terminado.
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 reiniciar nuevamente
sudo service apache2 restart
Este HowTo para CentOS fue fácil de seguir y solo tomó unos 5 minutos: wiki.centos.org/HowTos/Https
No detallaré cada paso aquí, pero los pasos principales son:
1.) Instale el módulo de openssl para apache, si no está ya instalado
2.) Generar un certificado autofirmado
- En este punto, debería poder visitar https://localhost/ éxito
3.) Configurar un host virtual si es necesario
Esto debería ser trabajo Ubuntu, Mint similar con Apache2
Es una buena guía, así que después de esto
y dejando tu ssl.conf así o similares
<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 esta ayuda para linuxer
Esto funcionó en Windows 10 con Apache24:
1 - Agregue esto en la parte inferior 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.crt
y server.key
en la carpeta C:/Apache24/conf/ssl
. Vea otras respuestas en esta página para encontrar esos 2 archivos.
¡Eso es!
Otro método simple es usar Python Server en Ubuntu.
Genera server.xml con el siguiente comando en terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Nota: Asumiendo que tiene openssl instalado.
Guarde el código debajo en un archivo llamado
simple-https-server.py
en cualquier directorio 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()
Ejecute el servidor desde la terminal:
python simple-https-server.py
Visite la página en:
https://localhost:4443
Notas adicionales :
Puede cambiar el puerto en el archivo
simple-https-server.py
en líneahttpd = BaseHTTPServer.HTTPServer((''localhost'', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Puede cambiar
localhost
a 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 HTML5 GeoLocation API 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/
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 clave:
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! ;)
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 apache2 web-server 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
- Navega al navegador y escribe
Verifique que obtenga la página predeterminada para apache2 como esta.
- Para encriptar una conexión web, necesitamos un certificado de CA (autoridad de certificación) o podemos usar certificados autofirmados. Vamos a crear un certificado autofirmado usando el siguiente comando.
openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes
Complete la información como se muestra a continuación.
mykey.key y mycert.pem deberían crearse en su actual directorio de trabajo.
- Sería bueno que moviéramos certificados y claves en un lugar común y sería fácil para el servidor web apache2 encontrarlos. Entonces, ejecutemos los siguientes comandos
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
- Vamos a habilitar el modo SSL en tu servidor
sudo a2enmod ssl
Debería salir así
- Vamos a configurar apache2 para usar el certificado autofirmado y la clave que hemos generado anteriormente.
sudo vi /etc/apache2/sites-available/default-ssl.conf
Encuentre estas dos líneas y reemplácelas con sus rutas cert y key.
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 de nuevo 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.
- Enhorabuena por haber configurado su apache2 con punto final HTTPS, ahora haga clic en avanzado -> agregar excepción -> confirmar excepción de seguridad , verá la página predeterminada nuevamente.
Windows + Apache 2.4, por ejemplo:
elimine el comentario de ssl_module en su archivo
httpd.conf
.LoadModule ssl_module modules/mod_ssl.so
escucha el puerto 443 al igual que el puerto 80 en tu archivo
httpd.conf
.Listen 80 Listen 443
descomentar Incluir hosts virtuales en su archivo
httpd.conf
.# Virtual hosts Include conf/extra/httpd-vhosts.conf
agrega VirtualHost en tu
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 las líneas de número de puerto 443
y SSL......
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 por primera vez, solo elija continuar.
Yo uso ngrok ( https://ngrok.com/ ) para esto. ngrok es una herramienta de línea de comandos y crea un túnel para localhost. Crea conexiones tanto http como 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 se puede tunelizar).
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.
aquí es la forma más simple de hacer esto
primero copie estos archivos server.crt y server.key (encuentre 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>