Certificates

From Ilianko

openssl

Генериране на ключ:

Създаване на сертифицираща организация

Certificate Authority - организация, която издава цифрови сертификати

Създаване на директорийна структура

mkdir CA
cd CA
mkdir certs crl newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial

index.txt, serial - списък на сертификатите

Настройки

cp /etc/ssl/openssl.cnf ./
nano openssl.cnf

В openssl.conf за [ CA_default ] трябва да се настрои пътят към директорията CA Примерно dir=/home/mrezhi/CA

[ CA_default ]
dir=/home/mrezhi/CA
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
basicConstraints=CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
[ v3_ca ]
# Extensions for a typical CA
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true
keyUsage = cRLSign, keyCertSign

...
[ policy_match ]
countryName             = match
stateOrProvinceName     = supplied
organizationName        = supplied
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

Генериране на частен ключ

openssl genrsa -aes256 -out private/ca.key.pem 4096

aes256 - криптира частния ключ

Генериране на сертификат за CA

openssl req -config openssl.cnf \
 -new -x509 -days 3650 \
 -key private/ca.key.pem \
 -sha256 -extensions v3_ca \
 -out certs/ca.cert.pem

Файлът е само за четене

chmod 444 certs/ca.cert.pem

Генериране и подписване на сертификати

частен ключ

openssl genrsa -out private/student.tugab.bg.key.pem 4096
chmod 400 student.tugab.bg.key.pem

Искане за подпис

openssl req -config openssl.cnf \
 -sha256 -new -key private/student.tugab.bg.key.pem \
 -out certs/student.tugab.bg.csr.pem


ili

openssl req -newkey rsa:2048 -keyout private/domain1.tugab.key -out certs/domain1.tugab.csr -config ./openssl.cnf


Подписване на искането за подпис

openssl ca -config openssl.cnf \
 -keyfile private/ca.key.pem \
 -cert certs/ca.cert.pem \
 -extensions usr_cert -notext -md sha256 \
 -in certs/student.tugab.bg.csr.pem \
 -out certs/student.tugab.bg.cert.pem

Конфигуриране на web server

  • Импортиране виртуална машина с Линукс\Дебиан
  • копиране на двойката ключове на хостинг машината (може да се използва fileZilla
  • инсталиране на apache2
apt-get install apache2
  • активиране на ssl модула
a2enmod ssl
  • актвиране на https
    • nano /etc/apache2/ports.conf
    • cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled
    • nano /etc/apache2/sites-enabled/default-ssl , да се настроят пътищата към сертификатите

Браузър

Да се добави генерираният root сертификат към вградените сертификати.



Generate Server Certificate Commands

  • Достъп до сървъра
ssh hq@ca-in-hq.stemo.local
  • роот потребител и папка със конфигурацията
su
cd /root/ca
  • Дефиниране FQDN
FQDN=xxx.stemo.local
  • Генериране на ключ. Ключа е без парола. Дължина 4096 бит-а.
openssl genrsa -out private/$FQDN.key.pem 4096
chmod 400 private/$FQDN.key.pem 
  • Генериране на рекуест. Оставят се стойностите по подразбиране, С изключение на FQDN, което е името за което ще бъде издаден сертификата. Location е опционално...
openssl req -config openssl.cnf -sha256 -new -key private/$FQDN.key.pem -out csr/$FQDN.csr.pem
chmod 444 csr/$FQDN.csr.pem 
  • Генериране на сертификат. Валидност 3000 дена.
openssl ca -config openssl.cnf -extensions server_cert -days 3000 -notext -md sha256 -in csr/$FQDN.csr.pem -out certs/$FQDN.cert.pem
  • Записване на сертификата и ключа във формат удобен за импорт в Windows
openssl pkcs12 -export -out $FQDN.pfx   \
          -inkey private/$FQDN.key.pem \
          -in certs/$FQDN.cert.pem
  • копиране за да могат да бъдат изтеглени през sftp клиент
cp /root/ca/certs/$FQDN.cert.pem /home/?? hq ili sf
cp /root/ca/private/$FQDN.key.pem /home/??
mv $FQDN.pfx /home/??

Commands

  • Отваряне на сертификат
openssl x509 -noout -text -in certs/ca.cert.pem
  • Проверка на сертификат
openssl verify -CAfile certs/ca.cert.pem intermediate/certs/intermediate.cert.pem 
  • Създаване на частен ключ
openssl genrsa  -out intermediate/private/t19201.stemo.test.key.pem 4096
  • Генериране на pfx (сертификат + ключ с парола)
openssl pkcs12 -export -out t19201.pfx \
 -inkey intermediate/private/t19201.stemo.test.key.pem \
 -in intermediate/certs/t19201.stemo.test.cert.pem


Revocation List

  • Генериране
openssl ca -config openssl.cnf  -gencrl -out crl/ca-in-sf.stemo.local.crl.pem


  • Проверка
openssl crl -in ca-in-sf.stemo.local.crl.pem -noout -text


Публикува се на http://crl.stemo.local/ca-in-sf.stemo.local.crl.pem

Публикува се на http://crl.stemo.local/ca-in-hq.stemo.local.crl.pem



https://jamielinux.com/articles/2013/08/act-as-your-own-certificate-authority/

https://jamielinux.com/articles/2013/08/generate-certificate-revocation-list-revoke-certificates/

https://jamielinux.com/articles/2013/08/create-an-intermediate-certificate-authority/


https://jamielinux.com/articles/2013/08/act-as-your-own-certificate-authority/

https://jamielinux.com/articles/2013/08/generate-certificate-revocation-list-revoke-certificates/

https://jamielinux.com/articles/2013/08/create-an-intermediate-certificate-authority/



openssl genrsa -out privkey.pem 2048

<