Respostas:
Acabei de tentar isso - eu precisava testar algum código de desenvolvimento no meu host local Apache no Windows . Isso foi muito mais difícil do que deveria ser. Mas aqui estão os passos que conseguiram funcionar depois de muito puxão de cabelo ...
Eu descobri que minha instalação do Apache openssl.exe
é útil. Se você não tiver uma cópia, precisará fazer o download. Minha cópia estava na Apache2\bin
pasta, e é como eu a refiro abaixo.
Passos:
Apache2\conf
pasta..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
Você pode deixar todas as perguntas em branco, exceto:
Quando isso terminar, digite
..\bin\openssl rsa -in blarg.pem -out blarg.key
Gere seu certificado autoassinado digitando:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
Abra o conf\httpd.conf
arquivo do Apache e verifique se o módulo SSL está ativado - não deve haver hash no início desta linha:
LoadModule ssl_module modules/mod_ssl.so
Algumas instalações do Apache colocam a configuração do SSL em um arquivo separado. Nesse caso, verifique se o arquivo conf SSL está sendo incluído. No meu caso, tive que descomentar esta linha:
Include conf/extra/httpd-ssl.conf
Na configuração do SSL httpd-ssl.conf
, tive que atualizar as seguintes linhas:
SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
DocumentRoot
- defina isso na pasta dos seus arquivos da webServerName
- o nome do host do servidorSSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
Reinicie o Apache.
https://localhost/
no seu navegador.Espero que você tenha chegado tão longe. Sinta-se à vontade para atualizar esta postagem com outras informações úteis.
(Screenshots cortesia de Neil Obremski e seu artigo útil - embora agora bastante desatualizado.)
Eu uso o ngrok ( https://ngrok.com/ ) para isso. O ngrok é uma ferramenta de linha de comando e cria um túnel para o host local. Ele cria a conexão http e https. Após o download, o seguinte comando precisa ser executado:
ngrok http 80
(Na versão 2, a sintaxe é: ngrok http 80. Na versão 2, qualquer porta pode ser encapsulada.)
Após alguns segundos, ele fornecerá dois URLs:
http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com
Agora, os dois URLs apontam para o host local.
aqui é a maneira mais simples de fazer isso
copie primeiro esses arquivos server.crt e server.key (localize em anexo) no diretório apache / conf / ssl
abra o arquivo httpd.conf e adicione a seguinte linha
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>
Para proteger a segurança das informações enviadas para e do servidor da Web, é uma boa idéia habilitar a criptografia da comunicação entre clientes e o servidor. Isso geralmente é chamado SSL .
Então, vamos configurar o HTTPS com um certificado autoassinado no Apache2. Vou listar as etapas que você deve seguir:
sudo apt-get install apache2
status do serviço sudo apache2
Deve gerar
Verifique se você obteve a página padrão para o apache2 assim.
openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes
Por favor, preencha as informações conforme mostrado abaixo.
mykey.key e mycert.pem devem ser criados no seu diretório de trabalho atual.
sudo cp mycert.pem / etc / ssl / certs
sudo cp mykey.key / etc / ssl / private
sudo a2enmod ssl
Deve sair assim
sudo vi /etc/apache2/sites-available/default-ssl.conf
Encontre essas duas linhas e substitua-as pelo seu certificado e caminhos principais.
Inicial
Final
cd / etc / apache2 / sites-available /
sudo a2ensite default-ssl.conf
serviço sudo reinício apache2
Deverá gerar algo assim com um aviso de que a página que você está prestes a visualizar não é segura porque configuramos o servidor com certificado autoassinado.
default-ssl.conf
como está. Eu estava prestes a mudar o nome mycert
para ssl-cert-snakeoil
mas esse arquivo já existe, então eu usei apenas isso! Então eu pulei com segurança duas etapas no Debian.
Windows + Apache 2.4, por exemplo:
descomente ssl_module no seu httpd.conf
arquivo.
LoadModule ssl_module modules/mod_ssl.so
ouça a porta 443 como a porta 80 no seu httpd.conf
arquivo.
Listen 80
Listen 443
descomente Inclua hosts virtuais no seu httpd.conf
arquivo.
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
adicione o VirtualHost no seu 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>
apenas o número da porta 443
e as SSL......
linhas são diferentes da configuração http normal.
salve o arquivo de configuração e reinicie o serviço apache. então você pode visitar https: // localhost /
O navegador da web avisa que não é seguro na primeira vez, basta escolher continuar.
Na verdade, é bastante fácil, supondo que você tenha uma instalação openssl à mão. (Em que plataforma você está?)
Supondo que você esteja no linux / solaris / mac os / x, o mini-HOWTO do Apache SSL / TLS da Van tem um excelente passo a passo que não reproduzirei aqui.
No entanto, o resumo executivo é que você deve criar um certificado autoassinado. Como você está executando o apache for localhost, presumivelmente para desenvolvimento (ou seja, não é um servidor público da Web), você saberá que pode confiar no certificado autoassinado e pode ignorar os avisos que seu navegador lançará para você.
Isso deve ser trabalho Ubuntu, Mint semelhante ao Apache2
É um bom guia, portanto, seguindo este
e deixando seu ssl.conf assim ou similar
<VirtualHost _default_:443>
ServerAdmin your@email.com
ServerName localhost
ServerAlias www.localhost.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
você pode conseguir isso.
Espero que esta ajuda para linuxer
É muito simples,
basta executar os seguintes comandos
sudo a2enmod ssl
sudo service apache2 restart
sudo a2ensite default-ssl.conf
É isso aí, você terminou.
Se você deseja forçar o SSL (para usar sempre https), edite o arquivo:
sudo nano /etc/apache2/sites-available/000-default.conf
e adicione esta linha
<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
depois reinicie novamente
sudo service apache2 restart
systemctl reload apache2
atrás sudo a2ensite default-ssl.conf
.
Estou postando esta resposta porque lutei com isso e o Chrome atualizou sua segurança exigindo o Nome alternativo do assunto, que muitas postagens não possuem, pois não era necessário quando foram postadas como resposta. Estou assumindo que o WAMP já está instalado.
PASSO 1
Baixe o OpenSSL Light e instale
PASSO 2 (Opcional)
Embora essa parte seja opcional, facilita posteriormente a execução de comandos. Se você pular esta etapa, precisará fornecer o caminho completo para o openssl.exe, onde executará o comando. Se você preferir defini-lo, atualize o caminho openssl.exe em Variáveis de ambiente.
Variáveis de ambiente -> Variáveis do sistema -> Caminho -> Editar -> Novo -> c: \ Arquivos de programas \ OpenSSL-Win64 \ bin
ETAPA 3
Crie uma pasta chamada "chave" no c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
diretório.
Crie o arquivo de configuração para o CA MyCompanyCA.cnf com o conteúdo (você pode alterá-lo conforme suas necessidades):
[ 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
Crie o arquivo de configuração de extensões MyCompanyLocalhost.ext para o certificado do servidor da web:
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = localhost
DNS.2 = mycy.mycompany.com
PASSO 4
Execute estes comandos na ordem especificada para gerar a chave e os 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, você terá os arquivos MyCompanyCA.cer , MyCompanyLocalhost.cer e MyCompanyLocalhost.pvk .
PASSO 5
Instale MyCompanyCA.cer em
Painel de controle -> Gerenciar certificados de usuário -> Autoridades de certificação raiz confiáveis -> Certificados
Para instalar o MyCompanyLocalhost.cer, clique duas vezes nele.
PASSO 6
Abra c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.conf
e remova o comentário (remova o #) das três linhas a seguir:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
PASSO 7
Abra c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf
e altere todos os parâmetros para os mostrados abaixo:
Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
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 é a parte complicada. Se você cometer algum pequeno erro ao editar este arquivo, o SSL não funcionará. Faça uma cópia antes de editá-lo.
PASSO 8
Reinicie o Wamp e o Chrome. O host local agora está seguro: https: // localhost
Este tutorial do CentOS foi fácil de seguir e levou apenas 5 minutos: https://wiki.centos.org/HowTos/Https
Não detalharei cada etapa aqui, mas as principais etapas são:
1.) Instale o módulo openssl para o apache, se ainda não estiver instalado
2.) Gere um certificado autoassinado
- Neste ponto, você poderá visitar https: // localhost êxito
3.) Configure um host virtual, se necessário
Isso funcionou no Windows 10 com Apache24:
1 - Adicione isso na 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 - Adicione os arquivos server.crt
e server.key
noC:/Apache24/conf/ssl
pasta. Veja outras respostas nesta página para encontrar esses 2 arquivos.
É isso aí!
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
E seu ambiente local pode ser acessado em https://youruniquesubdomain.serveo.net
Eu não podia acreditar quando encontrei este serviço. Oferece tudo e é o mais fácil de usar. Se houvesse uma ferramenta tão fácil e indolor para todos os problemas ...
Executando o Apache no Windows 10 aqui. Não consegui que o Chrome confiasse no certificado feito na resposta superior de Simon. O que acabei fazendo foi usar o PowerShell para gerar um certificado autoassinado.
No PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1
Digite Certificate
na barra de pesquisa do Windows, clique noManage Computer Certificates
item do painel de controle sugerido.
No programa de Gerenciamento de Certificados que aparece (certlm), você deve ver uma localhost
chave abaixo Personal >> Certificates
.
Copiei este certificado para Trusted Root Certification Authorities
. Serei sincero, pois não tenho certeza se isso é necessário.
Selecionando o certificado recém-copiado, clique duas vezes nele (o certificado de host local). No modal Certificado, clique na Details
guia e no Copy to File...
botão.
Isso exibirá o Assistente de Exportação; optei por exportar a chave privada, clique em Avançar. Também escolhi Export all extended properties
(novamente, não tenho certeza se isso era necessário). Eu escolhi usar uma senha simples ( pass
) e a criptografia padrão. Escolha uma pasta para a qual exportar e nomeie o arquivo. Você sempre pode mover e renomear o arquivo, se necessário. Por uma questão de simplicidade, copie-o para sua pasta conf na instalação do Apache (no meu caso C:\apache\conf
:) e nomeie o arquivo myCert
(o arquivo resultante será um .pfx
arquivo)
.pfx
arquivo para uso com ApacheA partir daqui, basicamente segui o tutorial aqui , mas adicionarei instruções aqui (ajustadas para nossas configurações), caso o site seja desativado.
Abra o prompt de comando na /apache/conf/
pasta
Execute os seguintes comandos: Nota: Isso pressupõe que você esteja openssl.exe
na bin
pasta na pasta raiz do apache (isso deve ser padrão / padrão)
..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem
Isso solicitará uma senha, digite o que você inseriu na Etapa 2 quando exportou o .pfx
arquivo. No meu caso, é isso pass
. Digitei a mesma senha para a frase PEM e novamente para verificar. Isso criará um novo arquivo chamado privateKey.pem
na sua pasta conf.
Então corra
..\bin\openssl rsa -in privateKey.pem -out private.pem
Novamente, você será solicitado a fornecer uma senha ( Enter pass phrase for privateKey.pem:
), use a senha que você definiu privateKey.pem
. (No meu caso, pass
)
Você deverá ver uma mensagem que diz writing RSA key
e um novo arquivo chamado private.pem
em sua conf/
pasta. Este será o seu SSLCertificateKeyFile.
Agora, para gerar o certificado do servidor correspondente. Corre:
..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem
Isso solicitará uma senha, digite o que você inseriu na Etapa 2 quando exportou o .pfx
arquivo. Digite e agora você terá um arquivo chamado EntrustCert.pem
em sua conf
pasta. Este é o seu SSLCertificateFile
httpd.conf
Use os novos arquivos criados como a chave e o certificado do servidor. Certifique-se de alterar a raiz do documento para onde estão seus arquivos!
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>
Também em httpd.conf
:
LoadModule ssl_module modules/mod_ssl.so
está comentado (não#
na frente)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(NOTA: verifique se é onde está o arquivo!)Também tenho bibliotecas curl e ssl abertas incluídas:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
Esses módulos não devem ser necessários, mas observarei que os tenho habilitados:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
httpd-ssl.conf
Na extra/
pasta da conf/
pasta, você deverá ver um arquivo chamadohttpd-ssl.conf
.
5a Altere oDocumentRoot
- Altere DocumentRoot
do padrão para o diretório em que seus arquivos estão.
5b Altere oServerName
- Altere ServerName
do padrão (algo como www.example.com:443
) paralocalhost:443
5c. AltereSSLCertificateFile
Alterar SSLCertificateFile
do padrão ( ${SRVROOT}/conf/server.crt
) para${SRVROOT}/conf/EntrustCert.pem
5c. AltereSSLCertificateKeyFile
Alterar SSLCertificateKeyFile
do padrão ( ${SRVROOT}/conf/server.key
) para${SRVROOT}/conf/private.pem
Todos juntos, na <VirtualHost _default_:443>
tag.
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
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"
Depois de fazer essas alterações, você poderá reiniciar o Apache e navegar para https: // localhost sem um aviso de segurança e um pequeno cadeado!
Espero que isso ajude alguém! 😊
Fontes:
1.) Resposta de Auri Rahimzadeh na criação de um certificado autoassinado
2.) Entrust Datacard - Como converter um .pfx para ser usado com um servidor Apache?
Outro método simples é usar o Python Server no Ubuntu.
Gere server.xml com o seguinte comando no terminal:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
Nota: Supondo que você tenha o openssl instalado.
Salve o código abaixo em um arquivo nomeado simple-https-server.py
em qualquer diretório em que você deseja executar o 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()
Execute o servidor no terminal:
python simple-https-server.py
Visite a página em:
https://localhost:4443
Notas extras ::
Você pode alterar a porta no simple-https-server.py
arquivo na linha
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
Você pode mudar localhost
para o seu IP na mesma linha acima:
httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
e acesse a página em qualquer dispositivo conectado à sua rede. Isso é muito útil em casos como "você precisa testar a API de localização geográfica do HTML5 em um dispositivo móvel, e o Chrome restringe a API apenas em conexões seguras".
Gist: https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
Para aqueles que usam o macOS, este é um ótimo guia https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions para configurar seu ambiente de desenvolvimento da Web local. Na sua terceira parte, https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller explica como configurar o apache com um certificado autoassinado:
Este é o comando principal:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
Mas há alguns passos que você precisa seguir, então confira isso e boa sorte! ;)
Gostaria de acrescentar algo à resposta muito boa do @CodeWarrior, que funciona perfeitamente no Chrome, mas para o Firefox precisa de uma etapa adicional.
Como o Firefox não transmite os Certificados CA do Windows, por padrão, você precisa continuar about:config
, role para baixo atésecurity.enterprise_roots.enabled
e altere-o para true.
Agora seu certificado deve ser visto como válido também no Firefox.
É claro que isso é apenas para fins de desenvolvimento, pois a confiança no SSL é uma preocupação crítica de segurança e altere essas configurações somente se você conhecer as implicações.
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
Dê um tapa no seu subdomínio e número da porta e você estará pronto para continuarhttps://youruniquesubdomain.serveo.net