Cumartesi, Aralık 15, 2012

OpenSSL İle Sertifika Zinciri Oluşturmak

OpenSSL İle Sertifika Zinciri Oluşturmak
Dizin yapısı oluşturulur;
# mkdir /path_to_ssldir/ssldir
# cd /path_to_ssldir/ssldir
# mkdir newcers keys crls CA
# touch index.txt
# echo ‘100’ > crls/crlnumber
# echo ‘1000’ > serial
# cd keys

Sertifika zincirinin kök anahtarı oluşturulur. Anahtar (CA.key) BASE64 (PEM) formatındadır ve 2048 bit uzunluğundadır.
# openssl genrsa -out CA.key 2048

Kök sertifika oluşturulması:
# cd ..
# openssl req -new -x509 -days 3650 -key keys/CA.key -config openssl.cnf -extensions v3_ca -out certs/ca.pem

-new                     : Yeni bir imzalama talebi oluşturur.
-x509                    : İmzalama isteği yerine kendi kendine imzalayan bir sertifika üretir.
-days                    : Sertifikanın süresini belirler
-key                      : Daha önceden üretilmiş özel anahtarın yolunu tanımlar.
-config                 : Daha önceden ayarların tanımlandığı dosya yolunu tanımlar.
-extensions       : Ayar dosyasında (openssl.cnf) v3_ca olarak tanımlanan bölümdeki değerleri kullanmasını sağlar.
-out                       : Üretilen sertifikanın nereye yazılacağını tanımlar.

Kullanıcı sertifika talebinin oluşturulması:
# openssl req -new -nodes -newkey rsa:2048 -keyout keys/key1.pem -config openssl.cnf -out user1.csr

-new                     : Yeni bir imzalama talebi oluşturur.
-nodes                 : Oluşturulacak anahtarın şifrelenmesini engeller.
-newkey             : Anahtar çeşidini ve uzunluğunu tanımlar. Anahtar daha önce oluşturulduysa (–key) parametresi ile bulunduğu yer gösterilebilir.
-keyout                               : Oluşacak anahtarın nerede saklanacağı belirtilir.
-config                 : Daha önceden ayarların tanımlandığı dosya yolunu belirtilir.
-out                       : Üretilen sertifika talebinin nereye yazılacağını belirtilir.

Kullanıcı sertifika talebinin imzalanması:
# openssl ca -in user1.csr -config openssl.cnf

Using configuration from openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4097 (0x1001)
        Validity
            Not Before: Dec 15 00:06:57 2012 GMT
            Not After : Dec 15 00:06:57 2013 GMT
        Subject:
            countryName               = TR
            stateOrProvinceName       = Gebze
            organizationName          = TUBITAK
            organizationalUnitName    = SEA.NET
            commonName                = test01.ev.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Subject Key Identifier:
                F2:0E:93:7C:09:6F:EB:90:4F:07:CE:BE:F7:1D:64:B3:FB:3E:F6:8E
            X509v3 Authority Key Identifier:
                keyid:50:27:F7:40:E8:15:5F:29:C2:E2:1D:00:76:C0:BD:9A:62:05:E1:E2

            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
Certificate is to be certified until Dec 15 00:06:57 2013 GMT (365 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
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4097 (0x1001)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=TR, ST=Gebze, L=Kocaeli, O=TUBITAK, OU=SEA.NET, CN=SEA.NET Root Certificate
        Validity
            Not Before: Dec 15 00:06:57 2012 GMT
            Not After : Dec 15 00:06:57 2013 GMT
        Subject: C=TR, ST=Gebze, O=TUBITAK, OU=SEA.NET, CN=test01.ev.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:cb:97:ef:47:99:7c:e6:55:aa:36:68:79:7d:ef:
                    5d:d4:b0:91:00:3c:57:12:7f:46:d5:98:b5:be:b2:
                    9b:0d:9d:cf:50:d1:a7:19:fa:b6:ab:18:c0:14:56:
                    c0:6f:e3:c2:a9:48:8c:3a:70:14:99:cd:a3:e8:98:
                    05:16:da:77:70:bc:65:6a:fe:a6:1b:cd:d3:9a:2a:
                    d0:af:dc:11:ba:5f:23:73:2f:5f:2b:99:dc:3f:46:
                    0f:7f:d3:60:e4:27:20:f2:bb:89:96:18:29:69:42:
                    78:d0:ad:76:88:65:81:42:57:89:11:39:8b:08:8f:
                    d0:18:66:02:9a:e4:f5:91:32:98:ce:c5:7d:a0:c7:
                    cb:3a:56:00:43:5d:f1:ff:57:49:27:29:30:c5:88:
                    53:84:1d:41:ef:a2:4f:88:f7:46:39:59:80:43:48:
                    7c:54:d5:78:ae:aa:52:d1:5c:a1:26:67:94:43:99:
                    7c:fb:47:12:c5:c6:f0:8f:c5:b4:2c:bd:2c:66:bc:
                    91:2c:94:fb:78:ee:25:b5:2c:fc:53:7a:9e:1a:8f:
                    2f:04:cc:a6:fc:33:fd:dc:da:10:09:49:14:33:0a:
                    8f:29:82:aa:a5:3a:16:cc:00:c2:66:6f:ed:fc:5d:
                    53:6f:12:43:68:0c:aa:52:bb:c8:90:73:13:1a:52:
                    4b:8d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Subject Key Identifier:
                F2:0E:93:7C:09:6F:EB:90:4F:07:CE:BE:F7:1D:64:B3:FB:3E:F6:8E
            X509v3 Authority Key Identifier:
                keyid:50:27:F7:40:E8:15:5F:29:C2:E2:1D:00:76:C0:BD:9A:62:05:E1:E2

            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
    Signature Algorithm: sha1WithRSAEncryption
        71:3f:09:67:ee:10:3a:68:f7:5e:af:c8:5f:f8:68:e7:ee:12:
        79:36:38:71:ab:de:4e:57:bd:14:c9:bd:4d:1b:1d:53:ca:f5:
        0a:4e:16:a6:32:3d:55:50:a0:4e:20:3e:4a:1b:4a:48:ac:bd:
        b2:74:67:1a:f5:2f:97:3d:52:b2:d7:4f:1d:45:61:4d:84:56:
        c7:13:0a:8f:cb:14:57:77:6c:81:da:99:b2:fa:6b:41:e9:75:
        7f:7e:b7:31:1a:e0:f6:a7:06:f6:de:6a:42:d8:bb:5f:ec:59:
        f0:3e:91:5b:52:cc:64:ec:57:27:ba:fc:5e:7d:98:39:08:ad:
        c6:be:c4:bd:f3:86:1a:80:fa:3e:07:c1:59:9a:a8:53:5b:d2:
        f6:b0:d5:8f:38:f4:3a:e9:83:b1:05:59:b4:23:3a:ec:ac:45:
        24:b9:ef:13:b1:6b:41:91:85:49:b9:d5:1a:9c:d1:3e:84:88:
        c7:fb:a5:c8:51:08:64:81:9c:ac:b5:26:f6:62:17:16:f1:a8:
        bb:0c:46:97:48:b8:75:7e:d0:e8:91:75:c7:8e:02:60:e2:c3:
        e6:c5:74:67:29:53:38:91:fe:f8:aa:ba:01:c2:6b:db:d6:81:
        52:60:33:5f:c4:70:f8:be:20:23:a2:80:a6:f4:85:cd:0d:49:
        2a:9e:55:44
-----BEGIN CERTIFICATE-----
MIIDpTCCAo2gAwIBAgICEAEwDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMCVFIx
DjAMBgNVBAgMBUdlYnplMRAwDgYDVQQHDAdLb2NhZWxpMRAwDgYDVQQKDAdUVUJJ
VEFLMRAwDgYDVQQLDAdTRUEuTkVUMSEwHwYDVQQDDBhTRUEuTkVUIFJvb3QgQ2Vy
dGlmaWNhdGUwHhcNMTIxMjE1MDAwNjU3WhcNMTMxMjE1MDAwNjU3WjBZMQswCQYD
VQQGEwJUUjEOMAwGA1UECAwFR2ViemUxEDAOBgNVBAoMB1RVQklUQUsxEDAOBgNV
BAsMB1NFQS5ORVQxFjAUBgNVBAMMDXRlc3QwMS5ldi5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDLl+9HmXzmVao2aHl9713UsJEAPFcSf0bVmLW+
spsNnc9Q0acZ+rarGMAUVsBv48KpSIw6cBSZzaPomAUW2ndwvGVq/qYbzdOaKtCv
3BG6XyNzL18rmdw/Rg9/02DkJyDyu4mWGClpQnjQrXaIZYFCV4kROYsIj9AYZgKa
5PWRMpjOxX2gx8s6VgBDXfH/V0knKTDFiFOEHUHvok+I90Y5WYBDSHxU1XiuqlLR
XKEmZ5RDmXz7RxLFxvCPxbQsvSxmvJEslPt47iW1LPxTep4ajy8EzKb8M/3c2hAJ
SRQzCo8pgqqlOhbMAMJmb+38XVNvEkNoDKpSu8iQcxMaUkuNAgMBAAGjWjBYMAkG
A1UdEwQCMAAwHQYDVR0OBBYEFPIOk3wJb+uQTwfOvvcdZLP7PvaOMB8GA1UdIwQY
MBaAFFAn90DoFV8pwuIdAHbAvZpiBeHiMAsGA1UdDwQEAwIF4DANBgkqhkiG9w0B
AQUFAAOCAQEAcT8JZ+4QOmj3Xq/IX/ho5+4SeTY4caveTle9FMm9TRsdU8r1Ck4W
pjI9VVCgTiA+ShtKSKy9snRnGvUvlz1SstdPHUVhTYRWxxMKj8sUV3dsgdqZsvpr
Qel1f363MRrg9qcG9t5qQti7X+xZ8D6RW1LMZOxXJ7r8Xn2YOQitxr7EvfOGGoD6
PgfBWZqoU1vS9rDVjzj0OumDsQVZtCM67KxFJLnvE7FrQZGFSbnVGpzRPoSIx/ul
yFEIZIGcrLUm9mIXFvGouwxGl0i4dX7Q6JF1x44CYOLD5sV0ZylTOJH++Kq6AcJr
29aBUmAzX8Rw+L4gI6KApvSFzQ1JKp5VRA==
-----END CERTIFICATE-----
Data Base Updated

Sertifikanın iptal edilmesi:
# openssl ca -revoke newcerts/1000.pem

Sertifika İptal Listesinin (SİL) oluşturulması:
# openssl ca -config openssl.cnf -gencrl -out crls/ca.crl


NOT : Ayar dosyası (openssl.cnf) içinde;
unique_subject = no  
parametresi aktif hale getirilmediyse, aynı CN’ye ait ikinci bir sertifika üretilemez.