Comment créer facilement un certificat SSL et le configurer dans Apache2 sous Mac OS X?

34

J'aimerais utiliser mon Mac OS X avec https pour les tests de développement local. Comment faire en sorte que Apache2 réponde facilement à ssl, comme le propose le test - je ne veux pas de vrai certificat, mais un faux pour que le travail local https fonctionne

Daniel Cukier
la source

Réponses:

58

Pour les tests de développement local, un certificat auto-signé est adéquat. Vous pouvez en générer un avec le kit OpenSSL comme ceci:

Générer la clé privée:

openssl genrsa -des3 -out server.key 1024

sortie:

Génération d'une clé privée RSA, module long 1024 bits
.................................................. ....... ++++++
........ ++++++
e est 65537 (0x10001)
Entrez la phrase de passe PEM:
Vérification du mot de passe - Entrez la phrase de passe PEM:

entrez une phrase secrète pour votre clé privée.

Génération de la CSR (demande de signature de certificat):

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

il demandera des détails comme celui-ci:

Nom du pays (code à 2 lettres) [GB]:
Nom de l'État ou de la province (nom complet) [Berkshire]:
Nom de localité (par exemple, ville) [Newbury]:
Nom de l'organisation (par exemple, société) [My Company Ltd]:
Nom de l'unité organisationnelle (par exemple, section) []:
Nom commun (par exemple, votre nom ou le nom d'hôte de votre serveur) []:
Adresse e-mail []:
Veuillez saisir les attributs "supplémentaires" suivants
à envoyer avec votre demande de certificat
Un mot de passe de défi []:
Un nom de société facultatif []:

c'est assez simple, le nom commun est le nom d'hôte de votre serveur, comme indiqué entre parenthèses.

Générer le certificat auto-signé:

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

Configuration de SSL dans httpd.conf pour Apache:

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

(remplacez le chemin approprié par le chemin de votre certificat et de votre clé)

Redémarrez Apache :

apachectl restart

Apache vous demandera la phrase secrète de votre clé. Si vous pensez que le serveur sera souvent arrêté, vous souhaiterez peut-être supprimer la phrase secrète de la clé afin d'éviter de la saisir à chaque fois. Sinon, ne vous en faites pas. Si tel est le cas, terminez cette étape après l'étape 2 ( Génération du CSR ):

cp server.key server.key.copy
openssl rsa -in server.key.copy -out server.key
John T
la source
c'est presque ennuyeux pour moi. Lorsque j'essaie d'accéder à une page de mes Rails en utilisant http, la page existe, mais lorsque j'utilise https, la page non trouvée est renvoyée. Savez-vous ce que pourrait être?
Daniel Cukier
Avez-vous modifié votre serveur virtuel pour qu'il utilise https sur le port 443? Il devrait ressembler à ceci: <VirtualHost 192.168.1.100:443> SSLEngine activé, etc ... </ VirtualHost>
John T
Merci pour cela, un certificat SSL fonctionne bien sur Lion avec cela. Je pensais juste ajouter quelques points qui devraient vous faciliter la vie. Apache d'Apple a un fichier httpd-ssl.conf qui est déjà configuré pour regarder dans / private / etc / apache2, donc si vous mettez vos fichiers serveur. * À cet emplacement, il y a un fichier de moins à éditer. En outre, vous devez éditer httpd.conf car la ligne qui inclut httpd-ssl.conf est commentée par défaut. Enfin, 365 jours, c'est un peu court, vous voudrez peut-être une date d'expiration plus longue ou vous le ferez encore l'année prochaine (j'ai utilisé 3650)
GordonM
Si quelqu'un a déjà eu des problèmes comme moi, vous serez heureux de trouver ce lien, qui explique comment configurer correctement virtualhost
Relequestual
Si c'est votre machine de développement, vous voudriez probablement avoir une clé privée sans mot de passe: openssl rsa -in server.key -out server.nopass.key
Aldekein