Wie erstelle ich ein selbstsigniertes SSL-Zertifikat?

64

Ich habe SSL auf meinem Webserver eingerichtet und benötige jetzt zwei Dateien:

  • Ein Zertifikat
  • einen Zertifikatsschlüssel

Wie erstelle ich ein selbstsigniertes Zertifikat zu Testzwecken?

Stefano Palazzo
quelle

Antworten:

93

Ubuntu, auch die 'Minimal'-Variante, ist ssl-certbereits vorinstalliert, sodass Sie nichts tun müssen.

Die gesuchten Dateien befinden sich bereits auf Ihrem System:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Fortgeschrittene:

Wenn Sie aus irgendeinem Grund ein neues Zertifikat erstellen müssen, können Sie es ausführen

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Wenn Sie das Ablaufdatum Ihres Zertifikats ändern möchten, können Sie das Skript make-ssl-cert unter bearbeiten /usr/sbin/make-ssl-cert. Um 124 gibt es eine Zeile ähnlich der folgenden:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Wo Sie das Ablaufdatum ändern können, indem Sie das -daysArgument hinzufügen :

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Weitere Optionen finden Sie auf der Handbuchseite vonreq .

Stefano Palazzo
quelle
10
Bei Ubuntu-Server 12.04 (AMI-Cloud-Image) ist SSL-Zertifikat nicht standardmäßig installiert. Sobald ssl-cert installiert ist, wird /etc/ssl/certs/ssl-cert-snakeoil.pem automatisch verfügbar.
Stann
make-ssl-cert verwendet die zu verwendende Schlüssellänge (und andere Einstellungen) /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
Beim Versuch, eine Website in einer lokalen VM-Instanz zu testen, wollte ich, dass Google Chrome so verhält, als wäre es ein ganz normales Zertifikat. Ich musste zuerst den Hostnamen der VM www.test.mydomain.commithilfe des hostnameBefehls in der VM-CLI so einstellen, dass er mit der Test-URL übereinstimmt (z. B. ) . Anschließend wird der Schlüssel neu generiert, wobei --force-overwriteder Common Name (CN) des Schlüssels mit der Test-URL übereinstimmt. Wenn ich den Schlüssel auf dem Hostcomputer als vertrauenswürdige Stammzertifizierungsstelle (in den Chrome-Einstellungen / Erweitert) installierte, erhielt ich die begehrte grüne Adressleiste.
Buttle Butkus
1
mein 9-jähriger cert hat aufgehört, mit meinem upgrade auf debian 10 zu arbeiten, daher hat der make-ssl-certbefehl den tag für mich gerettet!
Jayen
23

Wie bereits erwähnt, wird Ubuntu Server mit den notwendigen Tools ausgeliefert. Abhängig von Ihrer Serverversion müssen Sie die spezifische Dokumentation nachschlagen . Ich werde versuchen, den selbstsignierten Zertifikaterstellungsprozess des aktuellen LTS (12.04) zusammenzufassen .

Zunächst generieren Sie die Schlüssel für die Certificate Signing Request (CSR):

openssl genrsa -des3 -out server.key 2048

Es liegt an Ihnen, eine Passphrase einzugeben oder nicht. In diesem Fall müssen Sie bei jedem (erneuten) Start eines Dienstes, der dieses Zertifikat verwendet, die Passphrase eingeben. Außerdem können Sie einen "unsicheren" Schlüssel ohne eine Passphrase aus der sicheren erstellen:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

Und jetzt erstellen Sie die CSR aus dem Schlüssel. Mit dem CSR und dem Schlüssel kann ein selbstsigniertes Zertifikat generiert werden:

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

Der letzte Schritt besteht in der Installation des Zertifikats und des Schlüssels unter Debian / Ubuntu in der Regel in /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

Und schließlich müssen die Anwendungen, die das Zertifikat / den Schlüssel verwenden, entsprechend konfiguriert werden.

nietonfir
quelle