ctserver.org Foren-Übersicht
Home |  Forum |  FAQ |  Suchen |  Haftungsausschluß |  Impressum
Downloads |  Wiki |  Chat |  RSS Feed |  Links |  Shop |  Partner
Einloggen, um private Nachrichten zu lesen |  Registrieren |  Login

miniHowTo: Eigene CA und Zertifikate erstellen - Teil 1

 
Neues Thema eröffnen   Neue Antwort erstellen    ctserver.org Foren-Übersicht -> miniHOWTOs
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

War das miniHowTo interessant/nützlich?
ja
100%
 100%  [ 2 ]
nein
0%
 0%  [ 0 ]
Stimmen insgesamt : 2

Autor Nachricht
neobiker
Moderator
Moderator


Anmeldungsdatum: 11.08.2005
Beiträge: 601
Wohnort: Nürnberg / Umgebung

BeitragVerfasst am: 01 Nov 2005 19:10    Titel: miniHowTo: Eigene CA und Zertifikate erstellen - Teil 1 Antworten mit Zitat Nach oben Nach unten

miniHowTo: Eigene CA und Zertifikate erstellen - Teil 1

Im folgenden beschreibe ich, wie man selber eine CA erstellt und damit eigene Zertifikate z.B. für den Apache erstellt und installiert.
Die Scripts make_ca und make_cert sind von mir modifiziert und um einige (eigentlich fast alle Wink) Kommandozeilen Optionen ergänzt worden.

Vorbereitungen:
Download im Downloadbereich unter Konfigurationsdateien - SSL CA
Dateien downloaden und entpacken
Code:
server:~# tar xvjf sslCA.bz2
sslCA/
sslCA/make_ca
sslCA/make_cert
sslCA/make_crl
sslCA/show_valid
sslCA/openssl.cnf
sslCA/genrandom/
sslCA/genrandom/README
sslCA/genrandom/Makefile
sslCA/genrandom/genrandom.c
sslCA/genrandom/genrandom.o
sslCA/genrandom/genrandom
sslCA/ipsec.conf
server:~#

Zum erstellen der eigenen CA passen wir als erstes die Konfig-Datei openssl.cnf an.
Code:
server:~# cd sslCA
server:~/sslCA# vi openssl.cnf
-------------------------------------------------
# OpenSSL example configuration file for IPsec certificates.
# 2002 by Andreas Steffen, Zuercher Hochschule Winterthur

####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section

####################################################################
[ CA_default ]

## Anpassen ##
dir             = /etc/sslCA            # Where everything is kept
...
[ req_distinguished_name ]
## Anpassen ##
countryName                     = Country Name (2 letter code)
countryName_default             = DE
countryName_min                 = 2
countryName_max                 = 2

localityName                    = Locality Name (eg, city)
localityName_default            = Webcity

0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = WebOrg
...
...
##################################################################
[ usr_cert ]
...
# Specifies a URI where a CRL can be retrieved from
crlDistributionPoints = URI:http://ctsrv.dyndns.org/cert.crl

# Alternate Host ID (FQDN) <uncomment and edit>
subjectAltName = critical, DNS:server.home.local

# Alternate User ID (USER_FQDN) <uncomment and edit>
subjectAltName = critical, email:postmaster@home.local
...
Hier sind oben angeführte Werte anzupassen, z.B.
    dir = /etc/sslCA
    countryName_default = DE
    localityName_default = Webcity
    0.organizationName_default = WebOrg

    Optional (oder auskommentieren):
    crlDistributionPoints = URI:http://ctsrv.dyndns.org/cert.crl
    subjectAltName = critical, DNS:server.home.local
    subjectAltName = critical, email:postmaster@home.local

Evtl. passt man zusätzlich gleich ipsec.conf an, wenn man später einmal Zertifikate für VPN erstellen will, z.B. für den IPCop. Die Datei ipsec.conf wird später in ein optional zu erstellendes tar-file zusammen mit dem Zertifikat gespeichert.
Code:
server:~/sslCA# cat ipsec.conf
conn Roadwarrior
        left=%any
        right=ctsrv.dyndns.org
        rightsubnet=192.168.1.0/24
        rightca="C=DE, L=WebCity, O=WebOrg, OU=VPN, CN=ctsrv.dyndns.org"
        network=auto
        auto=start
        pfs=yes


Eigene CA erstellen:
Anschliessend kann man mit dem Befehl ./make_ca eine eigene Root-CA erstellen, z.B. mit einem 4096-Bit Schlüssel und einer Gültigkeit von 4 Jahren.
Code:
server:~/sslCA# ./make_ca --bits 4096 --years 4

Don't forget to adjust ./openssl.cnf
Return to continue, CTRL-C to exit

Initialize CA and generate Root CA certificate
create some directories
initialize random seed
initialize serial numbers

generate 4096 bit RSA private key of CA
Generating RSA private key, 4096 bit long modulus
............................................++
....++
e is 65537 (0x10001)
Enter pass phrase for private/cakey.pem:
Verifying - Enter pass phrase for private/cakey.pem:

generate self-signed CA root certificate with a validity of 4 years
Enter pass phrase for private/cakey.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
Locality Name (eg, city) [Webcity]:
Organization Name (eg, company) [WebOrg]:
Organizational Unit Name (eg, section or CA) []:neobiker's CA
Common Name (eg, YOUR name, or SERVER name) []:CA from neobiker
Email Address (eg, YOUR email) []:webmaster@neobiker.de

list CA root certificate
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            a3:e1:10:11:80:68:9a:14
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=DE, L=Webcity, O=WebOrg, OU=neobiker's CA, CN=CA from neobiker/emailAddress=webmaster@neobiker.de
        Validity
            Not Before: Nov  1 16:43:46 2005 GMT
            Not After : Oct 31 16:43:46 2009 GMT
        Subject: C=DE, L=Webcity, O=WebOrg, OU=neobiker's CA, CN=CA from neobiker/emailAddress=webmaster@neobiker.de
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (4096 bit)
                Modulus (4096 bit):
                    00:dc:2b:22:59:25:09:48:95:11:5b:53:8c:5a:ad:
                    3a:a8:7b:9d:50:53:d4:fd:1f:08:84:fb:9c:21:a4:
                    ...
                    09:45:47
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            Netscape Cert Type:
                SSL CA, S/MIME CA, Object Signing CA
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage:
                Certificate Sign, CRL Sign
    Signature Algorithm: md5WithRSAEncryption
        91:36:6f:63:e3:96:a5:66:2e:79:88:58:aa:14:4b:72:6f:95:
        f1:a0:a0:1d:a8:7b:5b:b7:0f:5c:e0:1a:b6:ad:da:db:8c:f7:
        ...
You can also export your root certificate cacert.pem for installation in a browser.
To make it easy for people to install your root certificate, place it on
your web site as cacert.crt with a URL to it.
# cp cacert.pem /var/www/apache2-default/cacert.crt

server:~/sslCA#
Das Passwort muss man sich sehr(!) gut merken, man braucht es immer wieder, wenn man die CA verwendet und neu erstellete Zertifikate signiert.

Eigene Zertifikate erstellen:
Mit dem Kommando ./make_cert werden eigene Zertifikate erstellt und gleich von der CA signiert.

Als Beispiel erstelle ich ein Zertifikat apache für den Apache Web-Server:
Code:
server:~/sslCA# ./make_cert apache --bits 2048 --years 2 --apache
Generate private key and certificate for apache


generate 2048 bit RSA private key: private/apacheKey.pem
Generating RSA private key, 2048 bit long modulus
....+++
...........+++
e is 65537 (0x10001)

generate certificate request by host apache
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
Locality Name (eg, city) [Webcity]:
Organization Name (eg, company) [WebOrg]:
Organizational Unit Name (eg, section or CA) []:LAN apache
Common Name (eg, YOUR name, or SERVER name) []:server.home.local
Email Address (eg, YOUR email) []:webmaster@home.local

list apache certificate request
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=DE, L=Webcity, O=WebOrg, OU=LAN apache, CN=server.home.local/emailAddress=webmaster@home.local
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:d7:45:d9:70:d0:9e:3e:54:6b:a0:3f:7b:18:81:
                    b0:fd:36:b9:7a:97:a9:d3:02:62:bb:98:ae:aa:1a:
                    .......
                    b7:c3
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: md5WithRSAEncryption
        10:3d:83:08:9a:39:13:ae:76:fa:3a:9b:b2:1c:40:03:a1:ad:
        ........
        f7:51:65:82

generate and sign apache certificate: apacheCert.pem
Using configuration from ./openssl.cnf
Enter pass phrase for /root/sslCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'DE'
localityName          :PRINTABLE:'Webcity'
organizationName      :PRINTABLE:'WebOrg'
organizationalUnitName:PRINTABLE:'LAN apache'
commonName            :PRINTABLE:'server.home.local'
emailAddress          :IA5STRING:'webmaster@home.local'
Certificate is to be certified until Nov  1 16:53:19 2007 GMT (730 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Generate TGZ file (y/n) ?

Generate PKCS#12 file (y/n) ?
server:~/sslCA#

Die Option --apache bewirkt, dass für das Zertifikat ein Schlüssel ohne Passwort erstellt und verwendet wird. Das erleichert doch den automatischen Start von Apache im Startscript erheblich - andernfalls fragt das Start-Script nämlich nach einem Passwort (u.U. auf der Console) nach... Wink
Zum zweiten wird autom. ein Soft-Link des Hash-Wertes des Zertifikates auf das Zertifikat erzeugt - den verwendet Apache wenn er ein Zertifikat sucht.

TIP:
Bei Server-Zertifikaten (z.B. für Apache Webserver) muss der Common Name (CN) exakt so angeben werden, unter dem die URL aufgerufen wird (http://www.ctserver.org/ -> www.ctserver.org). Sonst kommt eine Warnung, dass der Servername des Zertifikates nicht mit dem Servernamen übereinstimmt.

Die Zertifikate (z.B. apacheCert.pem) und deren Schlüssel (z.B. apacheKey.pem) werden in die Verzeichnisse
certs und private
gespeichert. Von dort kopiert man sie dann z.B. in das Zielverzeichnis wie z.B. /etc/apache2/ssl.

... to be continued ...

_________________
Gruss neobiker
Der Computer macht genau das, was Du ihm sagst - nicht das, was Du von ihm willst!

Scenic P4/1.700, 750MB, SATA, RAID1, Snapshot Backups, Samba, Fritzcard ISDN, mtG-Capri / Remote-Fax (PDF-Email), CapiSuite (Wav-Email), exchange4linux / Public Folders / Outlook, DSL-WLAN-Router (NAT / Firewall !) vor XEN-Endian Firewall 2.1 (RED, ORANGE, GREEN), WLAN, VPN, DMZ, Squirrelmail (SSL), WWW (SSL)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frickelpit
Moderator
Moderator


Anmeldungsdatum: 10.08.2005
Beiträge: 325
Wohnort: DE/BY/AB

BeitragVerfasst am: 07 März 2006 16:52    Titel: Antworten mit Zitat Nach oben Nach unten

Hmmm ...bleib hier in der Konsole hängen:
Code:
server:~/sslCA# ./make_ca --bits 4096 --years 4

Don't forget to adjust ./openssl.cnf
Return to continue, CTRL-C to exit

Initialize CA and generate Root CA certificate
create some directories
initialize random seed


"genrandom" hab ich wie es im Makefile steht compiliert und nach /usr/local/lib installiert.

Jemand einen Tip übrig?
Pit

_________________
OS: ctserver v1.1, Host-Kernel 2.6.12-ct-1, UML-Kernel IPCop 2.4.31-bs2
Software: capi4hylafax, capisuite, isdnutils, hylafax, vbox3, raccess4vbox3, vbox addons, postfix, spamassassin, squirrelmail, avelsieve, e4l, rsync...
Hardware: ASUS P4T533, P4 2,5GHz, 512MB RAM, 160GB+250GB Samsung, Netgear 4xGA311(NIC) 2xG608 (Switch), WLAN Sinus 154 DSL Basic 3, Fritz!X USB v1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
neobiker
Moderator
Moderator


Anmeldungsdatum: 11.08.2005
Beiträge: 601
Wohnort: Nürnberg / Umgebung

BeitragVerfasst am: 07 März 2006 17:42    Titel: Antworten mit Zitat Nach oben Nach unten

Ja... Laughing
einfach warten... dauert sehr lange... mehrere (!) Minuten Exclamation

Default sind nur 2048 Bits, dauerte über 7 Minuten:
Code:
server:~/sslCA# time ./make_ca; date

Don't forget to adjust ./openssl.cnf
Return to continue, CTRL-C to exit

Initialize CA and generate Root CA certificate
create some directories
initialize random seed
...
initialize serial numbers

generate 2048 bit RSA private key of CA
Generating RSA private key, 2048 bit long modulus
.................................+++
.....................................................+++
...

real    7m18.312s
user    0m3.520s
sys     0m0.099s
server:~/sslCA#

_________________
Gruss neobiker
Der Computer macht genau das, was Du ihm sagst - nicht das, was Du von ihm willst!

Scenic P4/1.700, 750MB, SATA, RAID1, Snapshot Backups, Samba, Fritzcard ISDN, mtG-Capri / Remote-Fax (PDF-Email), CapiSuite (Wav-Email), exchange4linux / Public Folders / Outlook, DSL-WLAN-Router (NAT / Firewall !) vor XEN-Endian Firewall 2.1 (RED, ORANGE, GREEN), WLAN, VPN, DMZ, Squirrelmail (SSL), WWW (SSL)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frickelpit
Moderator
Moderator


Anmeldungsdatum: 10.08.2005
Beiträge: 325
Wohnort: DE/BY/AB

BeitragVerfasst am: 07 März 2006 23:28    Titel: Antworten mit Zitat Nach oben Nach unten

Ahja....mal wieder etwas ungeduldig gewesen. Allerdings dauert es bei mir erheblich länger, so ca. 20 Minuten bei 2048 Bit Shocked

Thx
Pit

_________________
OS: ctserver v1.1, Host-Kernel 2.6.12-ct-1, UML-Kernel IPCop 2.4.31-bs2
Software: capi4hylafax, capisuite, isdnutils, hylafax, vbox3, raccess4vbox3, vbox addons, postfix, spamassassin, squirrelmail, avelsieve, e4l, rsync...
Hardware: ASUS P4T533, P4 2,5GHz, 512MB RAM, 160GB+250GB Samsung, Netgear 4xGA311(NIC) 2xG608 (Switch), WLAN Sinus 154 DSL Basic 3, Fritz!X USB v1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    ctserver.org Foren-Übersicht -> miniHOWTOs Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge miniHowTo: Xen mit Debian Etch flensdorfer miniHOWTOs 3 15 März 2007 16:02 Letzten Beitrag anzeigen
Keine neuen Beiträge minihowto: zwei DSL-Provider gleichze... vdrjoe miniHOWTOs 0 25 Feb 2007 17:09 Letzten Beitrag anzeigen
Keine neuen Beiträge miniHowTo: MythTV-Multimeda auf Host ... KlausHeinisch miniHOWTOs 0 07 Feb 2007 12:58 Letzten Beitrag anzeigen
Keine neuen Beiträge miniHowTo für RTFM-Verweigerer (Teil ... KlausHeinisch miniHOWTOs 3 11 Jan 2007 09:07 Letzten Beitrag anzeigen
Keine neuen Beiträge miniHowTo: Bessere Ausnutzung der UML... KlausHeinisch miniHOWTOs 2 30 Dez 2006 18:23 Letzten Beitrag anzeigen


Powered by phpBB © 2001, 2005 phpBB Group.