W artykule przedstawiono jak utworzyć nowy certyfikat Apache Web Server Self-Signed Certificate używając narzędzi openssl.
PROCEDURA
- Sprawdź datę wygaśnięcia istniejącego certyfikatu jeżeli go posiadasz new.crt używając następującego polecenia:
> openssl x509 -in new.crt -noout -enddate notAfter=Dec 30 11:10:42 2013 GMT
- Wygeneruj nowy certyfikat używając polecenia new.key do tworzenia prywatnego certyfikatu.
> openssl req -new -key new.key -out new.csr
Jeżeli potrzebujesz klucza 2048 bitowego RSA (prywatnego) dla użyj:
> openssl genrsa -out new.key 2048
Zauważ: flaga –des3 może zostać użyta jeżeli nie chcesz ochrony hasłem swojego klucza.
Sprawdź teraz informacje o kluczu:
> openssl req -in new.csr -noout -text Certificate Request: Data: Version: 0 (0x0) Subject: C=PL, ST=SL, L=Sosnowiec, O=Artmetic, OU=Master, CN=Artmetic/emailAddress=artmetic@artmetic.pl Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (4096 bit) Modulus: 00:cd:41:ec:df:20:66:44:05:1e:fb:f9:a5:cc:7a: c8:5b:14:d0:0f:5b:01:aa:39:1c:64:f7:f0:6b:dd: 2e:7f:35:fd:50:24:c4:51:9a:69:88:92:78:59:4a: dd:9f:aa:c5:de:57:7e:58:84:fe:ab:68:11:cb:71: b1:11:6f:2b:71:9e:e6:2d:75:05:84:ff:6e:b1:d6: a0:28:25:19:f2:a7:1c:62:f7:61:09:dc:fc:45:5f: 8b:95:d7:2c:10:69:f7:e4:dd:6a:ee:ea:d0:25:ea: 8b:a8:95:0f:8f:87:13:9a:8b:68:c4:98:9e:17:a6: 68:e5:d8:d6:73:39:d3:b5:81:49:65:3f:d2:29:c2: a1:29:a4:ad:3a:d1:24:93:8f:12:aa:ea:a6:61:56: d3:5a:03:a5:63:1a:89:50:ac:fa:a9:a3:4d:09:c0: .........
- Wygeneruj nowy klucz na kolejne 365 dni.
> openssl x509 -req -days 365 -in ssl/new.csr -signkey ssl/testingcert.key -out ssl/new.crt
- Utwórz new.pem dla klucza new.key.
> cp new.key new.pem
- Dopisz do pliku new.pem zawartość pliku new.crt.
> cat new.crt >> ./new.pem
- Zweryfikuj nowo utworzny certyfikat.
> openssl verify ssl/new.crt new.crt: C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl error 18 at 0 depth lookup:self signed certificate OK
Zbinduj certyfikat new.pem z portem4567.
> openssl s_server -cert new.pem -www -accept 4567 Using default temp DH parameters ACCEPT
Sprawdź jak certyfikat wyświetla się po połączeniu z portem. Jeżeli nie działa sprawdź firewall.
> openssl s_client -connect localhost:4567 CONNECTED(00000003) depth=0 C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl verify error:num=18:self signed certificate verify return:1 depth=0 C = PL, ST = SL, L = Sosnowiec, O = Artmetic, OU = Programmer, CN = Artmetic, emailAddress = artmetic@artmetic.pl verify return:1 --- Certificate chain 0 s:/C=PL/ST=SL/L=Sosnowiec/O=Artmetic/OU=Programmer/CN=Artmetic/emailAddress=artmetic@artmetic.pl i:/C=PL/ST=SL/L=Sosnowiec/O=Artmetic/OU=Programmer/CN=Artmetic/emailAddress=artmetic@artmetic.pl --- Server certificate -----BEGIN CERTIFICATE----- MIIDmjCCAoICCQCNFJcrFLsz8DANBgkqhkiG9w0BAQsFADCBjjELMAkGA1UEBhMC A1UEBhMCY2ExEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0 IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKOZIhvcNAQEBBQADggEPADCCAQoCggEB AMY9YCGsqII2jPAbmPskM2hgFKDBfb6LRMOBAu4dHtQiWm5ntO3exLG67HC+kVoH 0J2HX+nnDi6bbsh244vh7KkpM9rgxkybAyOYYNnDZoiW+87DLxkAR041tX8Vl2yk ...