Como permito o HTTPS para Apache no host local?

193

Me pediram para configurar o HTTPS com um certificado autoassinado no Apache no localhost, mas como eu realmente faço isso? Não faço a mínima idéia.

KennC.
fonte
1
Use o Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.netDê um tapa no seu subdomínio e número da porta e você estará pronto para continuarhttps://youruniquesubdomain.serveo.net
totymedli

Respostas:

135

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\binpasta, e é como eu a refiro abaixo.

Passos:

  1. Verifique se você possui permissões de gravação na pasta conf do Apache
  2. Abra um prompt de comando na Apache2\confpasta
  3. Tipo
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Você pode deixar todas as perguntas em branco, exceto:

    • Senha PEM: uma senha temporária como "senha"
    • Nome comum: o nome do host do seu servidor

  5. Quando isso terminar, digite
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Gere seu certificado autoassinado digitando:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Abra o conf\httpd.confarquivo 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

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

  9. Na configuração do SSL httpd-ssl.conf, tive que atualizar as seguintes linhas:

    • Atualizar
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      para
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (Os colchetes no caminho confundem o módulo, portanto, precisamos escapar deles)
    • DocumentRoot - defina isso na pasta dos seus arquivos da web
    • ServerName - o nome do host do servidor
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Reinicie o Apache.

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

Simon
fonte
2
Obrigado. Também tive que editar as diretivas ErrorLog, TransferLog e CustomLog para caminhos válidos, caso contrário o Apache não iniciaria.
Tamlyn
1
Por alguma razão, as instruções não funciona mais ou incompleto
Jacobian
6
Eu tive que descomentar o seguinte também no meu httpd.conf para que ele funcionasse: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
Eu fiz mais duas etapas para fazê-lo funcionar, adicione o módulo LoadModule socache_shmcb_module modules / mod_socache_shmcb.so e no httpd-ssl.conf eu corrijo o caminho do log ssl na linha 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .
5
Para gerar os arquivos .pem e .key, tive que definir 2 variáveis ​​de ambiente na etapa 2: definir OPENSSL_CONF = C: \ caminho \ para \ apache \ Apache2.4.4 \ conf \ openssl.cnf definir RANDFILE = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere
57

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.

sudip
fonte
1
@sudip, O código de código-fonte aberto do ngrok funciona de tal maneira que podemos hospedar isso em nosso próprio servidor sem modificações? Se não, é praticamente um desmancha-prazeres, porque é não ok para redirecionar as solicitações de usuários para um host externo como ngrok.
21715 Pacerier
2
@ Pacerier Não pretendo usá-lo no servidor. Eu o uso no host local (porque meu provedor de rede Bcz me fornece um IP dinâmico). Eu o usei pela primeira vez em testes paypal IPN e funcionou perfeitamente. Eu me pergunto por que alguém irá usá-lo no servidor e com que finalidade.
sudip 16/03/2015
@sudip, O objetivo é óbvio: Permitir que o código que funciona em HTTP também trabalhe com HTTPS sem a necessidade de codificação extra.
21715 Pacerier
1
Embora isso seja útil, parece incrivelmente inseguro permitir o acesso à sua máquina de desenvolvimento na Internet aberta. Usar algo assim faria com que você fosse demitido de um empregador consciente da segurança.
217 Andy M #
@YumYumYum. Antes, era totalmente gratuito na V 1. Mas, as portas http e https ainda estão livres na v 2 (não sei se existe alguma restrição de porta, existe um plano livre). Confira o plano gratuito aqui: ngrok.com/product#pricing
sudip 15/04/16
24

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>
Anil Gupta
fonte
3
I tinha para permitir também o módulo LoadModule ssl_module libexec / apache2 / mod_ssl.so no (/etc/apache2/httpd.conf)
Alexey
17
Eu me pergunto o quão seguro / perigoso é o download de arquivos * .crt * .key de fontes não confiáveis, em vez de gerar os seus próprios.
precisa saber é o seguinte
4
@PetrPeller estamos a criar https para o desenvolvimento local então por que maravilha para seguros / perigosos
Anil Gupta
7
Uma explicação sobre como gerar esses arquivos seria ótima. Porque o download de arquivos de uma fonte desconhecida é uma prática ruim, mas também porque esse tipo de link será interrompido em algum momento.
Stephan Vierkant
2
Este tutorial é ótimo digitalocean.com/community/tutorials/…
Dhiraj
11

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:

  • Instale o servidor web apache2 em sua máquina. Para máquina Linux, abra o terminal e digite

sudo apt-get install apache2

  • Após a instalação bem-sucedida, verifique o status do serviço apache2 executando o comando

status do serviço sudo apache2

Deve gerar

status do serviço apache2

  • Navegue até o navegador e digite

http: // localhost: 80

Verifique se você obteve a página padrão para o apache2 assim.

saída padrão do apache2

  • Para criptografar uma conexão da web, precisamos de um certificado da CA (autoridade de certificação) ou podemos usar certificados autoassinados. Vamos criar um certificado autoassinado usando o seguinte comando.

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

Por favor, preencha as informações conforme mostrado abaixo.

criar certificado autoassinado usando openssl

mykey.key e mycert.pem devem ser criados no seu diretório de trabalho atual.

  • Seria bom se movermos certificados e chaves em um local comum e será fácil para o servidor da web apache2 encontrá-los. Então, vamos executar os seguintes comandos

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Vamos ativar o modo SSL no seu servidor

sudo a2enmod ssl

Deve sair assim

habilitar ssl

  • Vamos configurar o apache2 para usar certificado e chave autoassinados que geramos acima.

sudo vi /etc/apache2/sites-available/default-ssl.conf

Encontre essas duas linhas e substitua-as pelo seu certificado e caminhos principais.

Inicial

default-conf

Final

após alterações na configuração

  • Ativar o site

cd / etc / apache2 / sites-available /

sudo a2ensite default-ssl.conf

  • Reinicie o serviço apache2

serviço sudo reinício apache2

  • Verifique o servidor da web apache2 no HTTPS. Abra seu navegador novamente e digite

https: // localhost: 443

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.

insira a descrição da imagem aqui

  • Parabéns, você configurou o seu apache2 com ponto de extremidade HTTPS, agora clique em avançado -> adicionar exceção -> confirmar exceção de segurança , você verá a página padrão novamente.

página após adicionar exceção

Dinesh Kumar
fonte
Prefiro não editar nenhum arquivo de configuração, se puder, por isso deixei default-ssl.confcomo está. Eu estava prestes a mudar o nome mycertpara ssl-cert-snakeoilmas esse arquivo já existe, então eu usei apenas isso! Então eu pulei com segurança duas etapas no Debian.
Rolf
@Rolf Eu concordo com você, mas na produção, é sempre o caso de usar um novo certificado e chave. Então, apenas para mostrar como eles podem ser criados, eu adicionei 2 etapas adicionais para o Debian. Obrigado :)
Dinesh Kumar
9

Windows + Apache 2.4, por exemplo:

  1. descomente ssl_module no seu httpd.confarquivo.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. ouça a porta 443 como a porta 80 no seu httpd.confarquivo.

    Listen 80
    Listen 443
    
  3. descomente Inclua hosts virtuais no seu httpd.confarquivo.

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

cuixiping
fonte
Isso funcionou para mim no XP Home, Apache 2.4. Copiou os 2 arquivos de certificado da postagem anterior (por Anil Gupta). Mod_ssl não comentado e incluiu httpd-vhosts.conf no httpd.conf, adicionou a diretiva VirtualHost de Anil Gupta (com alguns caminhos ajustados) no httpd-vhosts.conf.
jogi99
7

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

Pete Clark
fonte
Olá, estou trabalhando no sistema operacional Windows. E quanto ao certificado autoassinado, tenho que baixá-lo ou por qualquer outro meio?
KennC.
3
Não. Você mesmo fará o certificado autoassinado. Você tem a configuração apache httpd + ssl? Você precisará do ssl para fazer isso. Este site: rubayathasan.com/tutorial/apache-ssl-on-windows possui boas informações sobre como obter o SSL no Windows. Você fará algum trabalho de linha de comando, mas isso é bom para você de qualquer maneira. :-)
Pete Clark
3
Os links estão mortos :(
kpuccino
Sim - parece estar morto. Essa é a internet para você ... No entanto, o link para o Wiki do CentOS abaixo referenciado por @kayakinkoder também é bom: wiki.centos.org/HowTos/Https Se você estiver em um mac, esse artigo também parece razoável: gist. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4

Isso deve ser trabalho Ubuntu, Mint semelhante ao Apache2

É um bom guia, portanto, seguindo este

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

e deixando seu ssl.conf assim ou 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

você pode conseguir isso.

Espero que esta ajuda para linuxer

ackuser
fonte
2

É 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
Moh .S
fonte
E você precisa correr systemctl reload apache2atrás sudo a2ensite default-ssl.conf.
até
2

Atualização de 2019

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.confe 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.confe altere todos os parâmetros para os mostrados abaixo:

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

CodeWarrior
fonte
1

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

KayakinKoder
fonte
1

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.crte server.keynoC:/Apache24/conf/ssl pasta. Veja outras respostas nesta página para encontrar esses 2 arquivos.

É isso aí!

jogi99
fonte
Sim, isso funciona. Usei as etapas 1 a 3 do StephanieQ para gerar o certificado e depois "openssl x509 -req -in server.csr -signkey server.key -out server.crt" para gerar o arquivo * .crt com o cygwin.
b3wii
1

tl; dr

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

E seu ambiente local pode ser acessado em https://youruniquesubdomain.serveo.net

Serveo é o melhor

  • Sem inscrição.
  • Nenhuma instalação.
  • Possui HTTPS.
  • Acessível em todo o mundo.
  • Você pode especificar uma correção personalizada, subdomínio.
  • Você pode hospedá-lo automaticamente, para poder usar seu próprio domínio e estar à prova do futuro, mesmo se o serviço for desativado.

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

totymedli
fonte
1

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.

Etapa 1 - Gerar certificado autoassinado

No PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1

Etapa 2 - Configurar e exportar certificado

Digite Certificatena 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 localhostchave 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 Detailsguia 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 .pfxarquivo)

Etapa 3 - Converter .pfxarquivo para uso com Apache

A 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.exena binpasta 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 .pfxarquivo. No meu caso, é isso pass. Digitei a mesma senha para a frase PEM e novamente para verificar. Isso criará um novo arquivo chamado privateKey.pemna 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 keye um novo arquivo chamado private.pemem 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 .pfxarquivo. Digite e agora você terá um arquivo chamado EntrustCert.pemem sua confpasta. Este é o seu SSLCertificateFile

Etapa 4 - Configurar 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:

  • Verifique se não LoadModule ssl_module modules/mod_ssl.soestá comentado (não# na frente)
  • Descomentar LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • Descomentar LoadModule http2_module modules/mod_http2.so
  • Remover comentário 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

Etapa 5 - Configuração httpd-ssl.conf

Na extra/pasta da conf/pasta, você deverá ver um arquivo chamadohttpd-ssl.conf .

5a Altere oDocumentRoot - Altere DocumentRootdo padrão para o diretório em que seus arquivos estão.

5b Altere oServerName - Altere ServerNamedo padrão (algo como www.example.com:443) paralocalhost:443

5c. AltereSSLCertificateFile
Alterar SSLCertificateFiledo padrão ( ${SRVROOT}/conf/server.crt) para${SRVROOT}/conf/EntrustCert.pem

5c. AltereSSLCertificateKeyFile
Alterar SSLCertificateKeyFiledo 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 [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"

Reinicie o Apache

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!

Localhost seguro

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?

StephanieQ
fonte
0

Outro método simples é usar o Python Server no Ubuntu.

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

  2. Salve o código abaixo em um arquivo nomeado simple-https-server.pyem 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()
    
  3. Execute o servidor no terminal:

    python simple-https-server.py

  4. Visite a página em:

    https://localhost:4443

Notas extras ::

  1. Você pode alterar a porta no simple-https-server.pyarquivo na linha

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

  2. Você pode mudar localhostpara 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/

Asim KT
fonte
0

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! ;)

tiomno
fonte
0

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.

RDev
fonte