Próbuję wygenerować certyfikat z podpisem własnym z OpenSSL z SubjectAltName w nim. Podczas generowania csr dla certyfikatu, przypuszczam, że muszę użyć rozszerzeń v3 OpenSSL x509. Ja używam :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
Czy ktoś może mi pomóc z dokładną składnią?
ssl
openssl
ssl-certificate
x509certificate
x509
mohanjot
źródło
źródło
Odpowiedzi:
Jest to proces składający się z trzech etapów, który obejmuje modyfikację
openssl.cnf
pliku. Możesz to zrobić tylko z opcjami wiersza poleceń, ale ja nie robię tego w ten sposób.Znajdź swój
openssl.cnf
plik. Prawdopodobnie znajduje się w/usr/lib/ssl/openssl.cnf
:W moim systemie Debian
/usr/lib/ssl/openssl.cnf
jest używany przez wbudowanyopenssl
program. W najnowszych systemach Debian znajduje się pod adresem/etc/ssl/openssl.cnf
Możesz określić, który
openssl.cnf
jest używany, dodając fałszywyXXX
plik do pliku i sprawdzić, czyopenssl
dławiki.Najpierw zmodyfikuj
req
parametry. Dodajalternate_names
sekcję doopenssl.cnf
z nazwami, których chcesz użyć. Nie ma istniejącychalternate_names
sekcji, więc nie ma znaczenia, gdzie je dodasz.Następnie dodaj następujące elementy do istniejącej
[ v3_ca ]
sekcji. Wyszukaj dokładny ciąg[ v3_ca ]
:Możesz zmienić
keyUsage
na następujące w[ v3_ca ]
:digitalSignature
ikeyEncipherment
są standardową taryfą za certyfikat serwera. Nie martw sięnonRepudiation
. To bezużyteczny fragment wymyślony przez informatyków / dziewczęta, które chciały zostać prawnikami. To nic nie znaczy w świecie prawa.Ostatecznie IETF ( RFC 5280 ), przeglądarki i urzędy certyfikacji działają szybko i luźno, więc prawdopodobnie nie ma znaczenia, jakie użycie klucza zapewniasz.
Po drugie, zmodyfikuj parametry podpisywania. Znajdź tę linię w
CA_default
sekcji:I zmień to na:
Zapewnia to skopiowanie sieci SAN do certyfikatu. Inne sposoby kopiowania nazw DNS są zepsute.
Po trzecie, wygeneruj swój certyfikat z podpisem własnym:
Na koniec sprawdź certyfikat:
źródło
openssl genrsa -out cert.key 3072 -nodes
openssl req -new -x509 -key cert.key -sha256 -config openssl.cnf -out cert.crt -days 730 -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com"
subjectAltName=$ENV::ALTNAME
(i ustaw env. VarALTNAME=DNS:example.com,DNS:other.example.net
).IP
zamiastDNS
for,alternate_names
jeśli pracujesz z adresem IP. Możesz także skopiować plik konfiguracyjny lokalnie, a następnie określić go w wierszu poleceń openssl za pomocą-config my_config.cnf
. I być może będziesz musiał odkomentowaćreq_extensions = v3_req
.