V tomto dokumentu chci nastínit základy provozování a používání PKI postavené na openssl
.
V první části představím nezbytné součásti a koncepty. Druhá část se bude věnovat reálným příkladům.
X.509 PKI je bezpečnostní architektura používající zavedené kryptomechanizmy k podpoře případů užití jako je ochrana e-mailove pošty, autentifikace (nejen) webových služeb. Je velice podobná jiným systémům založeným na užití veřejných klíčů, jako je například OpenPGP.
Přepokládejme dva servery:
## ca.labka.cz # 1> Nastav heslo: $ echo "<Your Very Secure Password>" > passwd # 2> Vytvoř kořenovou CA: $ openssl req -x509 -newkey rsa:4096 -keyout myCA.key -out myCA.pem -days 3650 \ -subj "/C=CZ/L=Ostrava/O=Labka/OU=Infra/CN=ca.labka.cz/emailAddress=admin@admin" \ -passout file:passwd # 3> Zbav RSA klíč hesla: $ openssl rsa -in myCA.key -out myCA_nopass.key -passin file:passwd # 4> Exportuj CA balík certifikátů s privátním klíčem v PFX formátu: $ openssl pkcs12 -export -in myCA.pem -inkey myCA.key \ -passin pass:$(<passwd) -out CA.pfx -passout file:passwd # 5> Vytvoř konfigurační LDAP vzor pro CSR: $ cat <<EOT >myCSR.cnf basicContrains=CA:FALSE keyUsage=nonRepudiation,digitalSignature,keyEncipherment,dataEncipherment extendedKeyUsage=serverAuth,clientAuth subjectAltName=DNS:LDAP.LABKA.CZ,DNS:LABKA.CZ,IP:192.168.1.12 EOT # 6> Vytvoř LDAPS CSR soubory: $ openssl req -out myCSR.csr -newkey rsa:4096 -nodes -keyout myCSR.key \ -subj "/C=CZ/L=Ostrava/O=Labka/OU=Infra/CN=ldap.labka.cz/emailAddress=admin@admin" # 7> Podepiš požadavek o podepsaní certifikátu pomocí LDAP vzoru: $ openssl x509 -CA myCA.pem -CAkey myCA_nopass.key -CAcreateserial -req -in myCSR.csr -days 3650 \ -extfile myCSR.cnf -out myCSR.pem # 8> Exportuj podepsaný LDAPS balík certifikátů v PFX formátu: $ openssl pkcs12 -export -in myCSR.pem -inkey myCSR.key -out ldaps.pfx -passout file:passwd # 9> Bezpečnostní vložka $ rm -f passwd
## ldap.labka.cz # 10> Import kořenového certifikátu CA $ openssl pkcs12 -in CA.pfx -nocerts -out myCA.key $ openssl rsa -in myCA.key -out myCA.decrypted.key $ openssl pkcs12 -in CA.pfx -clcerts -nokeys -out myCA.crt $ update-ca-trust enable $ cp myCA.crt /etc/pki/ca-trust/source/anchors/ $ update-ca-trust extract $ openssl verify myCA.crt # 11> Import certifikátu LDAPS $ openssl pkcs12 -in ldaps.pfx -nocerts -out ldaps.key $ openssl rsa -in ldaps.key -out ldaps.decrypted.key $ openssl pkcs12 -in ldaps.pfx -clcerts -nokeys -out ldaps.crt $ cp ldaps.key \ /etc/pki/tls/certs/ldaps.crt \ /etc/pki/tls/certs/myCA.crt \ /etc/openldap/certs/ $ update-ca-certificates $ openssl verify ldaps.crt # 12> Ověř LDAPS spojeni $ adtool list 'ou=People,dc=labka,dc=cz'
https://www.ejbca.org/repository.html
http://henning.kropponline.de/2014/09/14/openldap-setup-w-ca-signed-certificate-centos/
https://www.openssl.org/docs/man1.0.2/apps/x509v3_config.html
http://jordaneunson.com/2009/10/openvpn-access-server-openldap-memberof/
https://ripe71.ripe.net/presentations/32-Automated-Certificate-Management.pdf