!!!SSL Zertifikate mit OpenSSL
X509 Zertifikate werden unter Linux normalerweise mit OpenSSL erstellt.
Ich beschreibe hier, wie ich einen privaten Schlüssel und einen Request für eine CA (Authorisierungsstelle) anlege:
{{{
openssl req -new -out example.csr -keyout example.key
}}}
;example.csr: enthält den Request
;example.key: enthält den privaten Schlüssel
Die Datei __example.crt__ mit dem Zertifikats-Requests lasse ich dann (z.B. durch Hochladen bei __cacert.org__ oder durch einen kommerziellen Anbieter) signieren. Ich erhalte eine Datei zurück, die ich __example.pem__ nenne.
Dann muss das Zertifikat noch in die Apache-Konfiguration eingetragen werden, z.B. so:
{{{
<VirtualHost _default_:443>
DocumentRoot /var/example/www/
ServerName www.example.org:443
ServerAlias example.org:443
ServerAdmin webmaster@example.org
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl.crt/example.pem
SSLCertificateKeyFile /etc/apache2/ssl.crt/example.key
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
}}}
!!Mehrere ~VirtualHosts
Eigentlich kann man pro IP-Adresse nur ein Zertifikat hinterlegen, so dass man pro Domain mit __https__-Verschlüsselung eine eigene IP-Adresse braucht.
Bei CaCert sind aber Möglichkeiten beschrieben, wie man in einem Zertifikat mehrere Domain-Namen unterbringt: siehe [http://wiki.cacert.org/wiki/VhostTaskForce]