Этап 0:
Мне не удалось насладиться openssl без правленного конфигурационного файла.А именно:
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = F:/OmniPlat/SSLkeys/ca_internal/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = F:/OmniPlat/SSLkeys/ca_internal # default place for new certs.
certificate = F:/OmniPlat/SSLkeys/ca_public/omniplat_ca.cer # The CA certificate
serial = F:/OmniPlat/SSLkeys/ca_internal/serial # The current serial number
crlnumber = F:/OmniPlat/SSLkeys/ca_internal/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = F:/OmniPlat/SSLkeys/ca_private/omniplat_ca.key # The private key
RANDFILE = $dir/private/.rand # private random number file
Этап 1:
@rem ## Выпустим собственный CA сертификат,@rem ### для этого, получим private-ключ для нашего CA сертификата. Это можно сделать выполнив команду:
C:\openssl\bin\openssl genrsa -out ca_private/omniplat_ca00.key 1024
attrib +R ca_private/omniplat_ca00.key
@rem ### После чего, создадим CA сертификат, выполнив команду:
C:\openssl\bin\openssl req -new -x509 -days 365 -key ca_private/omniplat_ca00.key -out ca_public/omniplat_ca00.cer -subj "/C=RU/ST=Russia/L=Moscow/O=OmniPlat/OU=OmniPlat CA/CN=OmniPlat CA Root"
@rem ### Сделаем экспорт в PKCS12, упаковав приватный ключ и сам CA сертификат:
C:\openssl\bin\openssl pkcs12 -export -in ca_public/Superplat_ca00.cer -inkey ca_private/Superplat_ca00.key -passout pass:654321 -out ca_private/Superplat_ca00.p12
@rem ### Здесь же создадим список отозванных сертификатов для CA сертификата:
C:\openssl\bin\openssl ca -gencrl -out ca_public/Superplat_ca00.crl
Этап 2:
set TermNum=0000000set CertName=SuperTerm%TermNum%
@rem ###########################################################################################################################################
@rem ### 4. Наш CA сертификат готов, теперь мы можем приступить к выпуску дочернего SSL сертификата, для этого сделаем запрос на SSL сертификат:
C:\openssl\bin\openssl.exe req -new -newkey rsa:1024 -keyout client_private/%CertName%.key -nodes -out client_public/ToCA_%CertName%.csr -subj "/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=SuperPlat Terminals/CN=%CertName%"
@rem ### 5. Подтвердим запрос на сертификат нашим CA сертификатом (подпишим серификат нашим CA сертификатом):
@rem ##openssl ca -policy policy_any -config openssl.conf -in csr/%CertName%.csr -days 360 -out cer/test.cer
@rem # C:\openssl\bin\openssl ca -policy policy_any -in csr/test.csr -days 360 -out cer/test.cer
@rem # C:\openssl\bin\openssl ca -policy policy_any -keyfile c:\iis\ca.key -cert c:\iis\ca.crt -in csr/test.csr -days 360 -out cer/test.cer
C:\openssl\bin\openssl ca -policy policy_anything -keyfile ca_private/Superplat_ca.key -cert ca_public/Superplat_ca.cer -in client_public/ToCA_%CertName%.csr -days 360 -out client_public/FromCA_%CertName%.cer
@rem ### Сделаем экспорт в PKCS12 полученного SSL сертификата:
@rem ##openssl pkcs12 -export -out p12/test.p12 -in cer/test.cer -inkey key/test.key
C:\openssl\bin\openssl pkcs12 -export -passout pass:654321 -out client_private/%CertName%.p12 -in client_public/FromCA_%CertName%.cer -inkey client_private/%CertName%.key
Этап 3:
Просто кликаем на файлах...\client_public\FromCA_SuperTerm0000000.cer
...\client_private\SuperTerm0000000.p12
Этап 4:
start Certmgrили
start mmc
Обратите внимание на расширения:
*.key
Текстовый файл-----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDJG2mmxGKxttH5xSpbCGbDfE1np4rSIlG22j5ukoP/Bmhs8g1T
...
2WJwCTUKJ6x7xexS7ubulQ0YjiBRLVu7YpbHc5yabONC+OY=
-----END RSA PRIVATE KEY-----
Это собственно приватный ключ -- он секретен и его нужно хранить под семью замками.
Файл не содержит описание ключа.
Как следствие каждый сгенеренный сертификат к приватному ключу может иметь свое собственное описание ключа.
*.cer (иногда называются *.pem, еще реже *.crt, еще реже *.der)
Текстовый файл. Содержит публичный ключ+описание ключа.
Посмотреть на него можно
c:\openssl\bin\openssl x509 -in <имя файла>.cer -noout -text > 1
Как не странно, принято называть "публичный сертификат" не зависимо от того, реально ли "сертифицирован" удостоверяющим центром или нет.
Если же подтвержден, то расширение остается прежним.
- .pem - (Privacy Enhanced Mail) Base64 encoded DER certificate, enclosed between "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----"
- .cer, .crt, .der - usually in binary DER form, but Base64-encoded certificates are common too (see .pem above)
Пример публичного сертификата
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
f7:2b:ac:56:b3:64:b2:d4
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=RU, ST=Russia, L=Moscow, O=SuperPlat, OU=CA, CN=SuperPlat CA
Validity
Not Before: Jul 4 10:51:59 2012 GMT
Not After : Jul 4 10:51:59 2013 GMT
Subject: C=RU, ST=Russia, L=Moscow, O=SuperPlat, OU=CA, CN=SuperPlat CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c9:1b:69:a6:c4:62:b1:b6:d1:f9:c5:2a:5b:08:
66:c3:7c:4d:67:a7:8a:d2:22:51:b6:da:3e:6e:92:
83:ff:06:68:6c:f2:0d:53:80:f7:1c:37:fb:56:72:
38:f3:e1:ee:da:9f:97:9c:42:d0:43:db:a4:8f:55:
9e:24:48:73:24:3b:ec:96:5c:b4:b1:31:7c:a9:ff:
69:42:e1:3e:c7:33:75:2a:9d:45:b2:17:24:1d:35:
56:b3:69:e0:ea:c1:ca:cf:d7:50:de:88:fa:e0:0b:
e2:df:ff:d0:30:8f:6f:e3:fc:4e:a3:d7:01:c2:c0:
1a:68:35:b6:1c:f2:18:4c:8d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
89:62:A4:9A:CD:78:A9:C5:BF:27:F7:33:C5:13:D4:21:5D:0A:A9:41
X509v3 Authority Key Identifier:
keyid:89:62:A4:9A:CD:78:A9:C5:BF:27:F7:33:C5:13:D4:21:5D:0A:A9:41
DirName:/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=CA/CN=SuperPlat CA
serial:F7:2B:AC:56:B3:64:B2:D4
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
75:64:af:ad:53:8f:58:79:ae:60:47:e4:64:8c:cc:82:00:6b:
76:00:c1:fc:6e:7f:dc:f0:89:13:d1:47:16:67:17:5e:f8:c4:
29:86:10:4c:69:38:38:c4:42:24:c4:be:72:8e:62:e5:e2:89:
b0:5c:66:4b:23:fd:32:07:43:d4:60:e1:95:13:3f:31:65:67:
74:4a:01:12:bb:45:b7:cc:65:38:2d:06:89:07:82:1e:34:de:
f2:f7:59:a1:35:13:4c:5b:ba:cd:52:c5:be:74:a9:98:b4:63:
1d:31:cb:d7:13:ff:23:ad:a4:74:34:0c:cc:5b:74:16:b8:ff:
f6:64
Пример публичного сертификата, который был удостоверен удостоверящим центром
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4 (0x4)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=RU, ST=Russia, L=Moscow, O=SuperPlat, OU=CA, CN=SuperPlat CA
Validity
Not Before: Jul 4 11:11:04 2012 GMT
Not After : Jun 29 11:11:04 2013 GMT
Subject: C=RU, ST=Russia, L=Moscow, O=SuperPlat, OU=SuperPlat Terminals, CN=SuperTerm0000000
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b9:14:fa:dd:58:99:ec:87:4c:7e:55:14:df:da:
79:f5:45:d0:fd:a2:27:98:72:86:04:26:10:71:c4:
32:bc:4f:80:8b:24:02:e7:8a:eb:5c:ea:4a:2e:c6:
eb:a0:2e:dd:62:5e:b8:0c:42:b4:08:b7:c9:4e:a4:
15:ca:66:3d:2b:7b:47:88:26:fb:99:70:a3:98:c3:
7c:6f:28:00:ec:f2:15:6e:1e:cb:bf:2c:89:73:e7:
82:28:e6:ae:6e:c4:4a:29:d4:f3:5d:43:58:f6:f0:
b9:a9:27:a9:3d:d5:bc:31:79:db:fd:bf:0b:ea:b9:
8f:37:ca:31:c7:8b:08:1d:1f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
1F:C6:C4:C2:86:67:B4:90:0F:79:E0:BD:6F:E2:95:C6:4D:04:6B:7F
X509v3 Authority Key Identifier:
keyid:89:62:A4:9A:CD:78:A9:C5:BF:27:F7:33:C5:13:D4:21:5D:0A:A9:41
Signature Algorithm: sha1WithRSAEncryption
01:7e:64:92:e4:dd:d1:b9:57:0b:dc:72:86:f3:41:eb:18:db:
28:cc:96:1d:e5:75:37:51:f6:db:a5:f7:4d:c4:ae:18:b3:68:
b7:6a:dc:1b:82:ef:81:2e:f8:31:fb:55:8c:41:d4:58:98:62:
f1:05:cc:41:98:56:fa:98:f9:84:c9:7d:f7:cc:19:00:5b:47:
ad:be:b1:09:23:4f:e8:31:90:aa:31:ad:e7:83:0d:e9:7e:c3:
4e:15:33:f6:c4:62:7c:b1:f7:e0:d7:dc:02:59:34:ca:17:4d:
54:97:66:ea:f2:fd:c0:6b:10:2b:33:71:91:2b:91:ef:b0:fc:
a1:bc
*.p12 (в Windows может иметь расширение *.pfx)
Бинарный файл - контейнер
Предназначен для хранения как приватных, так и публичных ключей/сертификатов.
Как правило содержит приватный ключ (*.key) и публичный сертификат (*.cer)
*.crl
Текстовый файл. Содержит запрос к удостверящему центру CA (фактически публичный ключ+описание ключа).
-----BEGIN X509 CRL-----
MIIBPTCBpwIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJSVTEPMA0GA1UE
...
pYdKWJ6m76GqkHOfASM2FJTPFkXgGptqt8PEGm14SDs3
-----END X509 CRL-----
См. также:
http://www.handcode.ru/2010/03/openssl.html
http://citforum.ru/security/cryptography/openssl/
http://www.opennet.ru/openforum/vsluhforumID10/1487.html
http://en.wikipedia.org/wiki/X.509
Комментариев нет:
Отправить комментарий