Erstellt am: 20.02.2008 | Editiert am: 15.07.2008

CAcert Zertifikat erstellen oder aktualisieren

Mit OpenSSL und CAcert ein X.509-Zertifikat für verschiedene Anwendungen erstellen oder aktualisieren

Dieser Artikel beschäftigt sich mit dem CAcert Zertifikat. Darin möchte ich meine Erfahrungen sammeln und diese euch zur verfügung stellen. CAcert ist eine gemeinschaftsbetriebene, nicht-kommerzielle Zertifizierungsstelle (Certification Authority, Root-CA oder kurz CA), die kostenfrei X.509-Zertifikate für verschiedene Einsatzgebiete ausstellt. Damit soll eine Alternative zu den kommerziellen Root-CAs geboten werden, die zum Teil recht hohe Gebühren für ihre Zertifikate erheben.

  1. Ein Zertifkat erstellen
    1. Verzeichnisse erstellen
    2. OpenSSL Config erstellen
    3. OpenSSL Zertifikat erstellen
    4. CAcert Zertifikat beantragen
  2. Anwendung in Programmen
    1. Apache-SSL
    2. Lighttpd
    3. Postfix TLS
    4. Courier IMAP-SSL
      1. Courier IMAP-SSL ohne CAcert
      2. Courier IMAP-SSL mit CAcert
    5. Courier POP3-SSL
      1. Courier POP3-SSL ohne CAcert
      2. Courier POP3-SSL mit CAcert
    6. Ldap SSL mit CAcert
  3. Links und Quellen
  4. Kommentar schreiben
  5. Weitere Themen
    1. Opera Email Konto mit CaCert SSL Zertifikat einrichten
    2. Evolution Email Konto mit CaCert

Ein Zertifkat erstellen

Verzeichnisse erstellen
mkdir /etc/ssl-cacert/
mkdir /etc/ssl-cacert/apache/
mkdir /etc/ssl-cacert/lighttpd/
mkdir /etc/ssl-cacert/mail/
mkdir /etc/ssl-cacert/proftpd/
mkdir /etc/ssl-cacert/ldap/
OpenSSL Config erstellen
nano /etc/ssl-cacert/openssl.conf
RANDFILE               = $ENV::HOME/.rnd

[ req ]
default_bits = 1024
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no
output_password =

[ req_distinguished_name ]
C = DE
ST = BUNDESLAND
L = STADT
O = IRGENDWAS
OU = IRGENDWAS
CN = DOMAIN.TLD <- SEHR Wichtig
emailAddress = webmaster@DOMAIN.TLD

[ req_attributes ]
challengePassword = Beliebiges Passwort
OpenSSL Zertifikat erstellen
openssl genrsa -des3 -out /etc/ssl/certs/apache_server.key 1024
openssl req -new -days 1825 -key /etc/ssl/certs/apache_server.key \
                        -out /etc/ssl/certs/apache_server.csr \
                        -config /etc/ssl-cacert/openssl.conf
openssl rsa -in /etc/ssl/certs/apache_server.key -out /etc/ssl/certs/apache_private.key.decrypted
CAcert Zertifikat beantragen

Account bei CAcert erstellen und die entsprechende Domain, unter Domains->Hinzufügen, eintragen. Nachdem die Domain hinzugefügt wurde, kann nun das Server Zertifikat beantragt werden. Dazu geht man in Server Zertifikate->Neu und kopiert den Inhalt von /etc/ssl/certs/apache_server.csr in das Textfeld.

cat /etc/ssl/certs/apache_server.csr
-----BEGIN CERTIFICATE REQUEST-----
.
.
-----END CERTIFICATE REQUEST----- 

Nach ein paar Sekunden wird das CAcert Zertifikat angezeigt:

-----BEGIN CERTIFICATE------
.
.
-----END CERTIFICATE-----

Nun eine neue Datei mit den Namen apache_server.crt erstellen und das Zertifikat von CAcert dort hinein kopieren:

nano /etc/ssl/certs/apache_server.crt

Anwendung in Programmen

Apache-SSL

Nun die Zertifikate und Schlüssel in das /etc/ssl-cacert/apache Verzeichnis kopieren:

cp /etc/ssl/certs/apache_server.key /etc/ssl-cacert/apache/
cp /etc/ssl/certs/apache_server.csr /etc/ssl-cacert/apache/
cp /etc/ssl/certs/apache_server.crt /etc/ssl-cacert/apache/
cp /etc/ssl/certs/apache_private.key.decrypted /etc/ssl-cacert/apache/

Einstellungen von Apache-SSL in /etc/apache-ssl/httpd.conf vornehmen:

SSLCertificateFile /etc/ssl-cacert/apache/apache_server.crt
SSLCertificateKeyFile /etc/ssl-cacert/apache/apache_private.key.decrypted

Nun noch Apache-SSL neustarten:

/etc/init.d/apache-ssl restart
Lighttpd

Als eine gute Alternative zu dem ressourcen-hungrigen Apache-SSL Server bietet sich Lighttpd an.

cp /etc/ssl/certs/apache_server.crt /etc/ssl-cacert/lighttpd/lighttpd.crt
cp /etc/ssl/certs/apache_private.key.decrypted /etc/ssl-cacert/lighttpd/lighttpd.key.decrypted

Jetzt noch das Class 3 - CAcert Zertifikat herunterladen:

wget --no-check-certificate https://www.CAcert.org/certs/root.crt -O /etc/ssl-cacert/lighttpd/cacert.crt
chmod a=r /etc/ssl-cacert/lighttpd/cacert.crt

Lighttpd brauch eine PEM Datei. Dazu wird die crt und die key Datei in diese eingefügt:

cat /etc/ssl-cacert/lighttpd/lighttpd.crt /etc/ssl-cacert/lighttpd/lighttpd.key.decrypted > /etc/ssl-cacert/lighttpd/lighttpd.pem

Jetzt noch die 10-ssl.conf von Lighttpd bearbeiten:

nano /etc/lighttpd/conf-enabled/10-ssl.conf
ssl.engine = "enable"
ssl.use-sslv2 = "disable"
ssl.cipher-list = "ALL:!ADH:!LOW:!SSLv2:!EXP:+HIGH:+MEDIUM"
ssl.pemfile = "/etc/ssl-cacert/lighttpd/lighttpd.pem"
ssl.ca-file   = "/etc/ssl-cacert/lighttpd/cacert.crt"

Jetzt kann Lighttpd neu gestartet werden:

/etc/init.d/lighttpd force-reload
Postfix TLS

Um Postfix mit SSL zu benutzen, können die Zertifikate und Schlüssel, welche eben generiert wurden, verwendet werden. Dazu werden einfach folgende Dateien nach /etc/ssl-cacert/mail/ kopiert.

cp /etc/ssl/certs/apache_server.key /etc/ssl-cacert/mail/mail.key
cp /etc/ssl/certs/apache_server.csr /etc/ssl-cacert/mail/mail.csr
cp /etc/ssl/certs/apache_server.crt /etc/ssl-cacert/mail/mail.crt
cp /etc/ssl/certs/apache_private.key.decrypted /etc/ssl-cacert/mail/mail.key.decrypted

Jetzt wird noch das root Zertifikat von CAcert benötigt:

wget --no-check-certificate https://www.CAcert.org/certs/root.crt -O /etc/ssl-cacert/mail/cacert.crt
chmod a=r /etc/ssl-cacert/mail/cacert.crt

Nun muss nur noch die main.cf Config Datei von Postfix angepasst werden:

nano /etc/postfix/main.cf
smtp_tls_key_file = /etc/ssl-cacert/mail/mail.key.decrypted
smtp_tls_cert_file = /etc/ssl-cacert/mail/mail.crt
smtp_tls_CAfile = /etc/ssl-cacert/mail/cacert.crt

smtpd_tls_key_file = /etc/ssl-cacert/mail/mail.key.decrypted
smtpd_tls_cert_file = /etc/ssl-cacert/mail/mail.crt
smtpd_tls_CAFile = /etc/ssl-cacert/mail/cacert.crt

Nachdem abspeichern muss Postfix neu gestartet werden, damit die Ändernungen wirksam werden.

/etc/init.d/postfix restart
Courier IMAP-SSL

Courier IMAP-SSL brauch eine PEM Datei, welche aus der key Datei, sowie der beglaubigten CRT Datei von CAcert besteht. Um für Courier ein Zertifikat zu erstellen wird nicht unbedingt ein CAcert CRT benötigt. Deswegen habe ich auch den Weg ohne CAcert gepostet. Weiter unten steht dann die Anleitung für eine PEM mit CAcert CRT.

Courier IMAP-SSL ohne CAcert
Als nächstes wird Courier-IMAP SSL beigebracht. Dazu wird die Datei imapd.cnf bearbeitet:
nano /etc/courier/imapd.cnf
RANDFILE = /usr/lib/courier/imapd.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=DE
ST=BUNDESLAND
L=STADT
O=IRGENDWAS
OU=IRGENDWAS
CN=domain.tld <- Sehr wichtig!
emailAddress=webmaster@domain.tld
Falls schonmal ein Zertifikat erstellt worden ist, so lösche es nun:
rm /usr/lib/courier/imapd.pem
Jetzt ist es Zeit ein Zertifikat zu erstellen:
mkimapdcert
Das ganze sieht dann so aus:
mkimapdcert
Generating a 1024 bit RSA private key
..................................++++++
...............++++++
writing new private key to '/usr/lib/courier/imapd.pem'
-----
1024 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
.........+................................
Jetzt kann courier-imap-ssl neu gestartet werden:
/etc/init.d/courier-imap-ssl restart
Courier IMAP-SSL mit CAcert
PEM Datei erstellen:
cat /etc/ssl-cacert/mail/mail.key.decrypted /etc/ssl-cacert/mail/mail.crt > /etc/ssl-cacert/mail/mail.pem

Als nächstes wird Courier-IMAP SSL mit CAcert CRT beigebracht.
Nun noch in der /etc/courier/imapd-ssl den Pfad zur eben erstellten PEM Datei verweisen:
nano /etc/courier/imapd-ssl
TLS_CERTFILE=/etc/ssl-cacert/mail/mail.pem
TLS_TRUSTCERTS=/etc/ssl-cacert/mail/mail.crt
TLS_VERIFYPEER=none
Courier nun neu starten mit:
/etc/init.d/courier-imap-ssl restart
Courier POP3-SSL

Wie bei imap-ssl muss auch Courier pop3-ssl eine PEM Datei sein eigen nennen. Dabei gibt es ebenfalls auch den Standard Weg. Weiter unten ist dann der Weg mit CAcert CRT beschrieben.

Courier POP3-SSL ohne CAcert
Als nächstes wird Courier-POP3 SSL beigebracht. Dazu wird die Datei pop3d.cnf bearbeitet:
nano /etc/courier/pop3d.cnf
RANDFILE = /usr/lib/courier/pop3d.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=DE
ST=BUNDESLAND
L=STADT
O=IRGENDWAS
OU=IRGENDWAS
CN=domain.tld <- Sehr wichtig!
emailAddress=webmaster@domain.tld
Falls schonmal ein Zertifikat erstellt worden ist, so lösche es nun:
rm /usr/lib/courier/pop3d.pem
Jetzt ist es Zeit ein Zertifikat zu erstellen:
mkpop3dcert
Courier nun neu starten mit:
/etc/init.d/courier-pop-ssl restart
Courier POP3-SSL mit CAcert
PEM Datei erstellen:
cat /etc/ssl-cacert/mail/mail.key.decrypted /etc/ssl-cacert/mail/mail.crt > /etc/ssl-cacert/mail/mail.pem
Nun noch in der /etc/courier/pop3dssl den Pfad zur eben erstellten PEM Datei verweisen:
nano /etc/courier/pop3d-ssl
TLS_CERTFILE=/etc/ssl-cacert/mail/mail.pem
Courier nun neu starten mit:
/etc/init.d/courier-pop-ssl restart
Ldap SSL mit CAcert

Damit die Adressbücher sicher verwaltet werden können, sollte ldap natürlich auch unter SSL betrieben werden.
Dazu sind nur wenige Schritte nötig, da die Zertifikate bereits erstellt wurden.

cp /etc/ssl-cacert/mail/mail.key.decrypted /etc/ssl-cacert/ldap/ldap.key.decrypted
cp /etc/ssl-cacert/mail/mail.crt /etc/ssl-cacert/ldap/ldap.crt
cp /etc/ssl-cacert/mail/cacert.crt /etc/ssl-cacert/ldap/cacert.crt
 

Ohne Cacert kann das Zertifikat folgendermaßen erstellt werden: (TLSCAcertificateFile wird hierbei nicht benötigt)

openssl req -new -x509 -nodes -out /etc/ssl-cacert/ldap/slapdcert.pem -keyout /etc/ssl-cacert/ldap/slapdkey.pem -days 365

Als nächstes Ldap sagen, wo genau die Zertifikate liegen:

nano /etc/ldap/slapd.conf
TLSCipherSuite             HIGH:MEDIUM:+SSLv2
TLSCAcertificateFile    "/etc/ssl-cacert/ldap/cacert.crt"
TLSCertificateFile         "/etc/ssl-cacert/ldap/ldap.crt"
TLSCertificateKeyFile   "/etc/ssl-cacert/ldap/ldap.key.decrypted"
loglevel                           256

#TLSVerifyClient demand
#TLSVerifyClient never

Die Datei ldap.conf muss auch angepasst werden:

nano /etc/ldap/ldap.conf
URI     ldaps://example.org
TLS_REQCERT demand
TLS_CACERTDIR /etc/ssl/certs/

Nun kann slapd neu gestartet werden:

/etc/init.d/slapd restart

  1. CAcert Artikel bei Wikipedia
  2. CAcert Zertifikate

Kommentar schreiben

  • Benötigte Felder sind mit einem Stern (*) markiert.
Sollte der Sicherheitscode unleserlich sein, kann durch einen Klick auf das Bild ein neuer Sicherheitscode erzeugt werden.

Sicherheitscode:
 


Database: 0,0123 s, 19 Anfragen, PHP: 0,2715 s, total: 0,2838 s