Fórum Root.cz
Hlavní témata => Software => Téma založeno: Petr Kostroun 19. 08. 2011, 11:52:18
-
Ahoj, snažím se rozběhat digitální podepisování emailů, a nedaří se mi to rozběhnout.
Používám pro to utilitku OpenSSL pro generování certifikátů typu pkcs12.
Potřeboval bych vygenerovat root certifikát, a na základě jeho vygenerovat child certy (root certifikát bych zároveň použil jako certifikát certifikační autority).
Když vygeneruju klíč, a naimportuju si ho do thunderbirdu aby sloužil jako elektronický podpis, thunderbird zobrazí vpravo nahoře obálku z otazníkem, a stěžuje si že certifikát je sice platný, ale není známo, že odesílatel a ten kdo email poslal je ta samá osoba. Certifikát použitý pro podpis neobsahuje emailovou adresu. Mohl by mi pls někdo poradit jak vygenerovat ten certifikát správně?
Díky
-
A je v tom Thunderbirdu importovaný ten kořenový certifikát? V opačném případě nemá řetězec důvěry pevný bod a není podle čeho určit, že je ten certifikát v konkrétním mailu platný.
-
Zkus při vytváření certifikátu do řádku Subject vecpat e-mailovou adresu, třeba takto:
openssl ... -subj /emailAddress=example@example.com/CN=Joe Example/C=CZ/ST=Ceska republika ...
Pokud tam není pole emailAddress (a OpenSSL ho standardně nevytváří), nemá MUA jak poznat, že certifikát patří dané e-mailové adrese.
Pozn: Nezkoušel jsem to prakticky, jen jsem se podíval, jak vypadají certifikáty, co už mám. Jestli to pomůže, dej vědět.
-
Petr : jj, přidal jsem si Root certifikát jako novou naimportovanou autoritu.
Ondřej : Zkoušel jsem to tam přidat pomocí přepínače, ale chyba zůstala pořád stejná
pořadí kommandu :
1.) Vygenerovat request
C:\data\sslcert>openssl ca -in request.pem -out cert.pem -subj "/emailAddress=petr.kostroun@xxx.cz/CN=Petr Kostroun/OU=EMPLOYEE/O=xxx/ST=Czech Republic/C=CZ" -conf ./openssl.cnf
Vystup :
Using configuration from ./openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :PRINTABLE:'Petr Kostroun'
organizationalUnitName:PRINTABLE:'EMPLOYEE'
organizationName :PRINTABLE:'xxx'
stateOrProvinceName :PRINTABLE:'Czech Republic'
countryName :PRINTABLE:'CZ'
2.) Podepsat certifikát pomocí mé Cert auth :
openssl ca -in request.pem -out cert.pem -subj "/emailAddress=petr.kostroun@xxx.cz/CN=Petr Kostroun/OU=EMPLOYEE/O=xxx/ST=Czech Republic/C=CZ" -config ./openssl.cnf
Vystup
Using configuration from ./openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :PRINTABLE:'Petr Kostroun'
organizationalUnitName:PRINTABLE:'EMPLOYEE'
organizationName :PRINTABLE:'xxx'
stateOrProvinceName :PRINTABLE:'Czech Republic'
countryName :PRINTABLE:'CZ'
Certificate is to be certified until Jun 27 12:08:42 2021 GMT (3600 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
3.) překonvertovat certifikát do pks12
C:\data\sslcert>openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ./demoCA/cacert.pem -name "Petr Kostroun" -out name-cert.p12 -config ./openssl.cnf
Chyba viz. : (https://picasaweb.google.com/100460485628434863657/Printscreens)
-
emailová adresa podle mě patří do common name. stejně, jako u https tam patří jméno serveru. příp. alespoň do Subject Alternative Name jako email:aaa@email.cz, https tam pak má DNS:www.xxx.cz
doporučuju taky přidat
X509v3 CRL Distribution Points
X509v3 Basic Constraints: CA:FALSE pro klienty, TRUE pak jen pro CA
X509v3 Extended Key Usage: critical TLS Web Server Authentication
nebo critical TLS Web Client Authentication, E-mail Protection
-
alfi: Taky jsem si to myslel, ale když jsem prozkoumal certifikáty, co jsem porůznu dostal. povětšinou tam CN buď vůbec není (třeba od StartSSL), nebo tam je ve tvaru „Jmeno Prijmeni“
PK: Thunderbird zřejmě potřebuje X509v3 rozšíření, můj certifikát od StartSSL tam má toto:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 176641 (0x2b201)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Class 1 Primary Intermediate Client CA
Validity
Not Before: Jul 3 14:34:36 2011 GMT
Not After : Jul 4 18:20:09 2012 GMT
Subject: description=456040-rNsScZR5tC2aNS95/emailAddress=ondrej.caletka@xxx.xx
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a9:74:0a:6b:51:a8:cf:51:6e:8f:d0:3f:5b:27:
be:14:51:dd:41:81:cc:29:cd:0c:35:d4:4d:ee:f4:
b1:ce:1b:73:45:3b:f6:0c:ba:f7:c4:98:f5:86:f8:
9d:5a:9d:35:bb:03:9d:d7:5c:1b:f1:b0:0b:4b:0a:
b4:df:ed:9a:58:ff:6c:18:dc:72:c4:cf:34:53:f1:
50:34:f2:fe:96:26:ce:84:1b:cc:55:ab:a9:25:57:
2c:df:25:53:4b:30:5b:ef:40:3b:e9:22:d9:aa:21:
a0:32:b8:d3:24:70:b0:89:ff:d6:08:be:f6:c5:66:
e8:7e:3f:0e:52:bd:a0:5f:34:a0:b9:da:c8:4b:20:
de:9b:21:49:12:be:11:5d:69:6a:01:c5:ba:cd:1d:
a3:0c:20:98:16:6e:ac:67:9f:91:06:39:4e:96:e0:
2a:b6:0c:46:3b:41:e4:89:f4:48:70:16:8c:6e:f8:
da:e5:ae:4e:46:81:c8:f9:7e:7d:91:dd:9c:1b:79:
da:3e:dc:77:48:df:2e:6d:4a:f9:5c:81:42:8c:b3:
ed:56:61:34:4c:26:f5:b8:8d:a6:6d:5f:f6:e3:da:
ca:02:5d:8b:f5:a3:c3:be:e4:46:80:b3:8b:8f:30:
34:cf:e8:56:0e:4e:70:89:4e:27:ce:9f:60:57:26:
63:e5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Digital Signature, Key Encipherment, Data Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication, E-mail Protection
X509v3 Subject Key Identifier:
4C:22:C3:C0:68:5F:BE:28:16:A3:F2:65:BA:1D:9C:05:D5:87:63:46
X509v3 Authority Key Identifier:
keyid:53:72:ED:92:9C:E0:DA:CB:01:5C:7C:7E:96:35:4E:F2:D4:B8:51:82
X509v3 Subject Alternative Name:
email:ondrej.caletka@xxx.xx
X509v3 Certificate Policies:
Policy: 1.3.6.1.4.1.23223.1.2.2
CPS: http://www.startssl.com/policy.pdf
CPS: http://www.startssl.com/intermediate.pdf
User Notice:
Organization: StartCom Certification Authority
Number: 1
Explicit Text: This certificate was issued according to the Class 1 Validation requirements of the StartCom CA policy, reliance only for the intended purpose in compliance of the relying party obligations.
User Notice:
Organization: StartCom Certification Authority
Number: 2
Explicit Text: Liability and warranties are limited! See section "Legal and Limitations" of the StartCom CA policy.
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.startssl.com/crtu1-crl.crl
Authority Information Access:
OCSP - URI:http://ocsp.startssl.com/sub/class1/client/ca
CA Issuers - URI:http://aia.startssl.com/certs/sub.class1.client.ca.crt
X509v3 Issuer Alternative Name:
URI:http://www.startssl.com/
-
Pokusil jsem se zeditovat openssl.conf, ale bohužel bez výsledku :
dir = .
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = ./demoCA # Kořenový adresář CA
certs = $dir/certs # Kam se ukládají vydané
# (podepsané) certifikáty
crl_dir = $dir/crl # Kam se ukládají CRL
database = $dir/index.txt # Index databáze
new_certs_dir = $dir/newcerts # Kam se ukládají nové
# certifikáty
certificate = $dir/cacert.pem # Certifikát CA
serial = $dir/serial # Soubor se sériovám číslem
# (pro počítání vydaných
# certifikátů)
crl = $dir/crl.pem # Aktuální CRL
private_key = $dir/private/cakey.pem # Soukromý klíč CA
RANDFILE = $dir/private/.rand # Soubor pro generování
# náhodných čísel
default_days = 3600
policy = policy_anything
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match
extendedKeyUsage = clientAuth,emailProtection
emailAddress_default = petr.kostroun@xxx.cz
subjectAltName=email:copy,email:petr.kostroun@xxx.cz
[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 1024 # Size of keys
default_keyfile = key.pem # name of generated keys
default_md = md5 # message digest algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
# Variable name Prompt string
#------------------------- ----------------------------------
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department, division)
emailAddress = Email Address
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
commonName = Common Name (hostname, IP, or your name)
commonName_max = 64
# Default values for the above, for consistency and less typing.
# Variable name Value
#------------------------ ------------------------------
0.organizationName_default = My Company
localityName_default = My Town
stateOrProvinceName_default = State or Providence
countryName_default = US
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
keyUsage=digitalSignature
[dir_sect]
C=CZ
O=Dantem
OU=Employee
CN=Petr Kostroun
emailAddress=petr.kostroun@xxx.cz
v certifikátu který jsem vygeneroval :
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 1 (0x1)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=CZ, ST=Czech Republic, L=Prague, O=Dantem, OU=Employee, CN=Dantem CA auth/emailAddress=petr.kostroun@dantem.cz
Validity
Not Before: Aug 22 10:58:46 2011 GMT
Not After : Jun 30 10:58:46 2021 GMT
Subject: C=CZ, ST=Czech Republic, O=Dantem, OU=Employee, CN=petr.kostroun@dantem.cz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:bc:59:43:61:20:37:bf:3a:9d:bb:3f:cb:06:ec:
1c:3d:5a:dd:d2:71:93:9e:86:91:9d:d5:03:d9:48:
5e:c9:a3:d3:31:93:aa:99:b9:36:53:82:73:b9:80:
ae:3d:c2:f8:6e:b8:9d:7b:36:cc:12:1b:46:b4:8a:
c9:58:e6:31:e6:b7:4d:c8:43:e4:0d:44:5f:d0:91:
de:7a:7a:4a:63:da:14:3d:56:ae:4f:a2:e8:61:74:
cb:01:60:b8:7c:8a:a8:33:4e:19:c5:3c:3c:fe:8b:
e1:41:59:8b:19:d3:bf:91:9b:66:f1:50:1c:48:3c:
bf:ad:b9:fe:43:27:e4:b3:23
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
18:5e:38:31:65:ab:69:10:56:a5:b0:ce:6a:12:09:a3:01:79:
f9:e0:93:84:69:dd:45:1a:e0:54:cc:cd:66:fd:b4:28:78:99:
81:b3:bd:ad:40:f8:84:ff:36:0f:2b:95:51:79:70:98:c1:b7:
f6:8e:8b:b8:bf:78:75:fa:fe:ea:f2:0a:6d:ae:39:93:03:97:
3c:b2:70:aa:54:c4:43:91:8c:6a:90:a2:c2:3c:c0:f5:ee:65:
b9:29:e9:fd:21:ff:a4:41:6d:3f:be:e1:76:af:6d:97:df:25:
a6:35:20:64:24:79:6b:3d:2d:09:61:82:b4:dc:65:90:e4:6a:
f9:22
-----BEGIN CERTIFICATE-----
MIICeDCCAeECAQEwDQYJKoZIhvcNAQEEBQAwgZwxCzAJBgNVBAYTAkNaMRcwFQYD
VQQIDA5DemVjaCBSZXB1YmxpYzEPMA0GA1UEBwwGUHJhZ3VlMQ8wDQYDVQQKDAZE
YW50ZW0xETAPBgNVBAsMCEVtcGxveWVlMRcwFQYDVQQDDA5EYW50ZW0gQ0EgYXV0
aDEmMCQGCSqGSIb3DQEJARYXcGV0ci5rb3N0cm91bkBkYW50ZW0uY3owHhcNMTEw
ODIyMTA1ODQ2WhcNMjEwNjMwMTA1ODQ2WjBsMQswCQYDVQQGEwJDWjEXMBUGA1UE
CBMOQ3plY2ggUmVwdWJsaWMxDzANBgNVBAoTBkRhbnRlbTERMA8GA1UECxMIRW1w
bG95ZWUxIDAeBgNVBAMUF3BldHIua29zdHJvdW5AZGFudGVtLmN6MIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQC8WUNhIDe/Op27P8sG7Bw9Wt3ScZOehpGd1QPZ
SF7Jo9Mxk6qZuTZTgnO5gK49wvhuuJ17NswSG0a0islY5jHmt03IQ+QNRF/Qkd56
ekpj2hQ9Vq5PouhhdMsBYLh8iqgzThnFPDz+i+FBWYsZ07+Rm2bxUBxIPL+tuf5D
J+SzIwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABheODFlq2kQVqWwzmoSCaMBefng
k4Rp3UUa4FTMzWb9tCh4mYGzva1A+IT/Ng8rlVF5cJjBt/aOi7i/eHX6/uryCm2u
OZMDlzyycKpUxEORjGqQosI8wPXuZbkp6f0h/6RBbT++4XavbZffJaY1IGQkeWs9
LQlhgrTcZZDkavki
-----END CERTIFICATE-----
v subjektu email chybí. Nejspíš asi chyba bude v mém konfiguráku. Poradil by mi někdo pls co s tím?
-
Tak už mám řešení. Skutečně je chyba v tom konfiguráku, a na řádku email_in_dn = no musí být místo no yes.