Como criar facilmente um certificado SSL e configurá-lo no Apache2 no Mac OS X?

34

Eu gostaria de usar meu Mac OS X com https para testes de desenvolvimento local. Como posso facilmente fazer o Apache2 responder ao SSL, apenas para propostas de teste - não quero um certificado real, apenas um falso para fazer o https local funcionar

Daniel Cukier
fonte

Respostas:

58

Para testes de desenvolvimento local, um certificado autoassinado é adequado. Você pode gerar um com o kit OpenSSL da seguinte maneira:

Gerando a chave privada:

openssl genrsa -des3 -out server.key 1024

saída:

Gerando chave privada RSA, módulo de 1024 bits
.................................................. ....... ++++++
........ ++++++
e é 65537 (0x10001)
Digite a senha do PEM:
Verificando a senha - insira a senha do PEM:

digite uma senha para sua chave privada.

Gerando o CSR (solicitação de assinatura de certificado):

openssl req -new -key server.key -out server.csr

ele solicitará detalhes como este:

Nome do país (código de 2 letras) [GB]:
Nome do estado ou província (nome completo) [Berkshire]:
Nome da localidade (por exemplo, cidade) [Newbury]:
Nome da organização (por exemplo, empresa) [My Company Ltd]:
Nome da unidade organizacional (por exemplo, seção) []:
Nome comum (por exemplo, seu nome ou o nome do host do seu servidor) []:
Endereço de e-mail []:
Digite os seguintes atributos 'extras'
para ser enviado com sua solicitação de certificado
Uma senha de desafio []:
Um nome opcional da empresa []:

é bem direto, o nome comum é o nome do host do seu servidor, como diz entre parênteses.

Gerando o certificado autoassinado:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Configurando o SSL no httpd.conf para Apache:

SSLEngine ativado
SSLCertificateFile /path/to/generated/server.crt
SSLCertificateKeyFile /path/to/generated/server.key

(substitua o caminho adequadamente pelo caminho do seu certificado e chave)

Reinicie o Apache :

apachectl restart

O Apache solicitará a senha da sua chave. Se você acha que vai desligar muito o servidor, remova a senha da chave para evitar que ela seja inserida toda vez. Caso contrário, não se preocupe. Nesse caso, conclua esta etapa após a etapa 2 ( Gerando o CSR ):

cp server.key server.key.copy
openssl rsa -in server.key.copy -out server.key
John T
fonte
é quase chato para mim. Quando tento acessar alguma página no meu Rails, usando http, a página existe, mas quando uso https, ele retorna a página não encontrada. Você sabe o que poderia ser?
22630 Daniel Cukier
Você mudou seu host virtual para usar https na porta 443? Deve olhar como este: <VirtualHost 192.168.1.100:443> SSLEngine On, etc .... </ VirtualHost>
John T
Obrigado por isso, eu tenho um certificado SSL funcionando bem no Lion com isso. Apenas pensei em acrescentar alguns pontos, que devem facilitar sua vida. O Apache da Apple possui um httpd-ssl.conf que já está configurado para procurar em / private / etc / apache2; portanto, se você colocar os arquivos server *., Haverá menos um arquivo para editar. Além disso, você precisa editar o httpd.conf porque a linha que inclui o httpd-ssl.conf é comentada por padrão. Finalmente, 365 dias é um pouco curto, você pode querer definir uma data de validade mais longo ou você vai estar fazendo isso novamente no próximo ano (eu usei 3650)
GordonM
Se alguém tiver problemas como o meu, ficará feliz em encontrar este link, que explica como configurar o host virtual com o virtualhostx corretamente para funcionar com o ssl yellowrobot.heroku.com/blog/2012/01/22/…
Relequestual
Se é a sua máquina dev você provavelmente gostaria de ter a chave privada sem senha: openssl rsa -in server.key out server.nopass.key
Aldekein