User Tools

Site Tools


пакет_openssl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
пакет_openssl [2020/06/25 14:42]
val [Настройка атрибутов организации в конфигурации ssl]
пакет_openssl [2024/05/04 05:20] (current)
val [Отзыв сертификатов]
Line 15: Line 15:
 ===== Интерактивное подключение по ssl ===== ===== Интерактивное подключение по ssl =====
 <​code>​ <​code>​
-$ openssl s_client ​-CApath /​etc/​ssl/​certs/ ​-connect ​student.bmstu.ru:443+$ openssl s_client -connect ​ru.wikipedia.org:443
  
-$ openssl s_client ​-CApath /​etc/​ssl/​certs/ ​-showcerts -connect ​student.bmstu.ru:​443+$ openssl s_client -showcerts -connect ​webinar6.bmstu.ru:​443 ​2>/​dev/​null | openssl x509 -noout -dates #-text | grep bmstu
  
-openssl s_client ​-CApath ​/etc/ssl/certs-starttls smtp -crlf -connect mailhub.bmstu.ru:25+faketime ​-f "​+500d"​ wget -q -O /dev/null https://webinar7.bmstu.ru ​&& echo Ok || echo Err
  
-$ openssl s_client -cert user1.crt -key user1.key -connect www.corpX.un:​443+openssl s_client -starttls smtp -crlf -connect mailhub.bmstu.ru:​25 
 + 
 +lan# openssl s_client -cert user1.crt -key user1.key -connect www.corpX.un:​443
 </​code><​code>​ </​code><​code>​
 GET /​cgi-bin/​test-cgi HTTP/1.1 GET /​cgi-bin/​test-cgi HTTP/1.1
 Host: www.corpX.un Host: www.corpX.un
 </​code><​code>​ </​code><​code>​
-openssl s_client -cert user1.crt -key user1.key -connect server.corpX.un:​993+lan# openssl s_client -cert user1.crt -key user1.key -connect server.corpX.un:​993
 </​code><​code>​ </​code><​code>​
 01 AUTHENTICATE EXTERNAL = 01 AUTHENTICATE EXTERNAL =
Line 42: Line 44:
 ==== Создание пары приватный/​публичный ключ ==== ==== Создание пары приватный/​публичный ключ ====
 <​code>​ <​code>​
 +student@lan:​~$
 user1@server:​~$ openssl genrsa 2048 > key.private user1@server:​~$ openssl genrsa 2048 > key.private
  
Line 47: Line 50:
  
 user1@server:​~$ scp key.public user2@www: user1@server:​~$ scp key.public user2@www:
 +student@lan:​~$ ftp-upload -h server -u student --password xxxxxxxx -v key.public
 </​code>​ </​code>​
  
 +  * [[Сервис FTP#​Команды ftp клиента]]
 ==== Шифрование данных ==== ==== Шифрование данных ====
 <​code>​ <​code>​
 +student@server:​~$ openssl pkeyutl -encrypt -inkey key.public -pubin < data.txt > data.enc
 user2@www:​~$ openssl rsautl -encrypt -inkey key.public -pubin < data.txt > data.enc user2@www:​~$ openssl rsautl -encrypt -inkey key.public -pubin < data.txt > data.enc
  
 user2@www:​~$ scp data.enc user1@server:​ user2@www:​~$ scp data.enc user1@server:​
 +student@lan:​~$ curl -v -o data.enc ftp://​student:​xxxxxxxx@server/​data.enc
  
 +student@lan:​~$ openssl pkeyutl -decrypt -inkey key.private < data.enc | tee data.txt
 user1@server:​~$ openssl rsautl -decrypt -inkey key.private < data.enc > data.txt user1@server:​~$ openssl rsautl -decrypt -inkey key.private < data.enc > data.txt
 </​code>​ </​code>​
Line 60: Line 68:
 ==== Цифровая подпись ==== ==== Цифровая подпись ====
 <​code>​ <​code>​
 +student@lan:​~$
 user1@server:​~$ openssl dgst -sha256 -sign key.private -out data.sign data.txt user1@server:​~$ openssl dgst -sha256 -sign key.private -out data.sign data.txt
  
 user1@server:​~$ scp data.* user2@www: user1@server:​~$ scp data.* user2@www:
 +student@lan:​~$ ftp-upload -h server -u student --password password -v data*
  
 +student@server:​~$
 user2@www:​~$ openssl dgst -sha256 -verify key.public -signature data.sign data.txt user2@www:​~$ openssl dgst -sha256 -verify key.public -signature data.sign data.txt
 </​code>​ </​code>​
Line 69: Line 80:
 ===== Создание параметра DH ===== ===== Создание параметра DH =====
 <​code>​ <​code>​
-# openssl dhparam -out /​etc/​openvpn/​dh2048.pem 2048+time openssl dhparam -out /​etc/​openvpn/​dh2048.pem 2048 
 +real    0m24.676s
 </​code>​ </​code>​
  
 ===== Создание самоподписанного сертификата ===== ===== Создание самоподписанного сертификата =====
  
 +  * *.corpX.un для wild card сертификата
 ==== Создание приватного ключа ==== ==== Создание приватного ключа ====
 <​code>​ <​code>​
 server# openssl genrsa -out server.key 2048 server# openssl genrsa -out server.key 2048
  
-server# chmod 400 server.key+server# ###chmod 400 server.key
 </​code>​ </​code>​
  
 ==== Создание сертификата ==== ==== Создание сертификата ====
 <​code>​ <​code>​
-server# openssl req -new -x509 -days 3650 -key server.key -out server.crt+server# openssl req -new -x509 -days 3650 -key server.key -out server.crt ​-addext '​subjectAltName=DNS:​server.corpX.un'​
 </​code><​code>​ </​code><​code>​
 ... ...
Line 91: Line 104:
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:​cko ​       Organization Name (eg, company) [Internet Widgits Pty Ltd]:​cko ​      
 Organizational Unit Name (eg, section) []:noc Organizational Unit Name (eg, section) []:noc
-Common Name (eg, YOUR name) []:​server.corpX.un+Common Name (eg, YOUR name) []:​server.corpX.un ​      !!!! для некоторых сервисов (ovpn) не должно быть пустым
 Email Address []:​noc@corpX.un Email Address []:​noc@corpX.un
 </​code>​ </​code>​
  
 +ИЛИ
 +
 +<​code>​
 +openssl req -new -x509 -days 3650 -key wild.key -out wild.crt -subj '/​CN=*.corpX.un/​O=CKO/​C=RU'​ -addext '​subjectAltName=DNS:​*.corpX.un'​
 +</​code>​
 ==== Просмотр содержимого файла сертификата ==== ==== Просмотр содержимого файла сертификата ====
 <​code>​ <​code>​
 server# openssl x509 -text -noout -in server.crt server# openssl x509 -text -noout -in server.crt
 +
 +server# openssl x509 -text -noout
 +-----BEGIN CERTIFICATE-----
 +...
 +
 +$ cat ~/​.kube/​config | grep client-certificate-data | cut -f2 -d : | tr -d ' ' | base64 -d | openssl x509 -text -out -
 </​code>​ </​code>​
  
 ===== Импорт сертификата центра сертификации ===== ===== Импорт сертификата центра сертификации =====
  
 +  * Материалы по Windows [[Материалы по Windows#​Экспорт корневого сертификата]]
 ==== Проверка ==== ==== Проверка ====
 <​code>​ <​code>​
Line 112: Line 137:
 ==== Debian ==== ==== Debian ====
 <​code>​ <​code>​
 +# wget http://​lan.corpX.un/​ca.crt
 +
 +# cp ca.crt /​usr/​local/​share/​ca-certificates/​
 +
 server# cp corpX-PDC-CA.crt /​usr/​local/​share/​ca-certificates/​ server# cp corpX-PDC-CA.crt /​usr/​local/​share/​ca-certificates/​
  
Line 125: Line 154:
 server.crt: OK server.crt: OK
  
-# wget -O - https://​www.corp55.un+# wget -O - https://​www.corpX.un 
 +</​code>​ 
 + 
 +==== CentOS/​AlmaLinux ==== 
 +<​code>​ 
 +# yum install ca-certificates 
 + 
 +# update-ca-trust force-enable 
 + 
 +# wget http://​lan.corp13.un/​ca.crt 
 + 
 +# cp ca.crt /​etc/​pki/​ca-trust/​source/​anchors/​ 
 + 
 +# update-ca-trust extract 
 + 
 +# wget -O - https://​www.corp13.un
 </​code>​ </​code>​
  
 ===== Удаление сертификата центра сертификации ===== ===== Удаление сертификата центра сертификации =====
 <​code>​ <​code>​
-server# /​usr/​local/​share/​ca-certificates/​corpX-PDC-CA.crt+server# ​rm /​usr/​local/​share/​ca-certificates/​corpX-PDC-CA.crt
  
 server# rm /​etc/​ssl/​certs/​corpX-PDC-CA.pem server# rm /​etc/​ssl/​certs/​corpX-PDC-CA.pem
Line 140: Line 184:
   * [[http://​gagravarr.org/​writing/​openssl-certs/​ca.shtml|Certificate Management and Generation with OpenSSL]]   * [[http://​gagravarr.org/​writing/​openssl-certs/​ca.shtml|Certificate Management and Generation with OpenSSL]]
   * [[http://​www.opennet.ru/​base/​sec/​ssl_cert.txt.html|Авторизация с помощью клиентских SSL сертификатов]]   * [[http://​www.opennet.ru/​base/​sec/​ssl_cert.txt.html|Авторизация с помощью клиентских SSL сертификатов]]
 +  * [[https://​arminreiter.com/​2022/​01/​create-your-own-certificate-authority-ca-using-openssl/​|Create your own Certificate Authority (CA) using OpenSSL]]
 +  * [[https://​www.golinuxcloud.com/​openssl-ca-vs-openssl-x509-comparison/​|openssl ca vs openssl x509 comparison]]
  
 ==== Зачем может понадобиться свой УЦ? ==== ==== Зачем может понадобиться свой УЦ? ====
Line 149: Line 195:
  
 ==== Настройка атрибутов базы CA в конфигурации ssl ==== ==== Настройка атрибутов базы CA в конфигурации ssl ====
 +
 +  * [[https://​unix.stackexchange.com/​questions/​313216/​openssl-sign-requests-with-extensions|OpenSSL sign requests with extensions]]
 +
 <​code>​ <​code>​
 lan# cat /​etc/​ssl/​openssl.cnf lan# cat /​etc/​ssl/​openssl.cnf
Line 154: Line 203:
 ... ...
 [ CA_default ] [ CA_default ]
-... 
-dir           = /root/CA 
  
 +dir           = /root/CA
 +...
 +#​unique_subject = no
 +...
 +copy_extensions = copy
 +...
 certificate ​  = /​var/​www/​html/​ca.crt certificate ​  = /​var/​www/​html/​ca.crt
- 
 crl           = /​var/​www/​html/​ca.crl crl           = /​var/​www/​html/​ca.crl
- 
 private_key ​  = $dir/ca.key private_key ​  = $dir/ca.key
 +
 +[ policy_match ]
 ... ...
 </​code><​code>​ </​code><​code>​
 cd cd
 +mkdir -p /​var/​www/​html/​
 mkdir CA mkdir CA
 mkdir CA/certs mkdir CA/certs
Line 208: Line 262:
 ... ...
 Common Name (eg, YOUR name) []:corpX.un Common Name (eg, YOUR name) []:corpX.un
-Email Address []:​noc@corpX.un 
 </​code>​ </​code>​
  
Line 223: Line 276:
 <​code>​ <​code>​
 www# openssl genrsa -out www.key 2048 www# openssl genrsa -out www.key 2048
-www# chmod 400 www.key 
 </​code>​ </​code>​
  
 ==== Создание запроса на сертификат ==== ==== Создание запроса на сертификат ====
 +
 +  * *.corpX.un для wild card сертификата
 +
 <​code>​ <​code>​
 lan# scp /​etc/​ssl/​openssl.cnf www:/​etc/​ssl/​ lan# scp /​etc/​ssl/​openssl.cnf www:/​etc/​ssl/​
  
-www# openssl req -new -key www.key -out www.req+www# openssl req -new -key www.key -out www.req ​  #-sha256
 </​code><​code>​ </​code><​code>​
 ... ...
 Common Name (eg, YOUR name) []:​www.corpX.un Common Name (eg, YOUR name) []:​www.corpX.un
-Email Address []:​noc@corpX.un 
 ... ...
 </​code>​ </​code>​
  
 +=== Добавление расширений в запрос на сертификат ===
 +
 +<​code>​
 +# cat /​etc/​ssl/​openssl.cnf
 +</​code><​code>​
 +...
 +[ req ]
 +...
 +req_extensions = v3_req
 +
 +[ req_distinguished_name ]
 +...
 +[ v3_req ]
 +...
 +subjectAltName = @alt_names
 +
 +[ alt_names ]
 +DNS.1 = corpX.un
 +DNS.2 = www.corpX.un
 +#DNS.1 = *.corpX.un
 +</​code>​
 ==== Передача и просмотр содержимого запроса на сертификат ==== ==== Передача и просмотр содержимого запроса на сертификат ====
 <​code>​ <​code>​
Line 252: Line 327:
  
 lan# ls CA/​newcerts/​ lan# ls CA/​newcerts/​
 +</​code>​
 +
 +=== Добавление расширений при подписи запроса на сертификат ===
 +
 +<​code>​
 +# cat www.ext
 +</​code><​code>​
 +subjectAltName = @alt_names
 +[alt_names]
 +DNS.1 = corpX.un
 +DNS.2 = www.corpX.un
 +#DNS.1 = *.corpX.un
 +</​code><​code>​
 +lan# openssl ca ... -extfile www.ext
 </​code>​ </​code>​
  
Line 279: Line 368:
 </​code>​ </​code>​
  
-==== Добавление атрибутов в сертификат ==== 
  
-  * На примере subjectAltName. Оказался,​ нужным для Spark клиента 
-  * [[https://​www.endpoint.com/​blog/​2014/​10/​30/​openssl-csr-with-alternative-names-one|OpenSSL CSR with Alternative Names one-line]] 
- 
-<​code>​ 
-# cat /​etc/​ssl/​openssl.cnf 
-</​code><​code>​ 
-... 
-[ req ] 
-... 
-req_extensions = v3_req 
-... 
-[ v3_req ] 
- 
-# Extensions to add to a certificate request 
- 
-#​basicConstraints = CA:FALSE 
-#keyUsage = nonRepudiation,​ digitalSignature,​ keyEncipherment 
-subjectAltName = @alt_names 
- 
-[ alt_names ] 
-DNS.1 = corpX.un 
-DNS.2 = server.corpX.un 
-... 
-</​code>​ 
  
 ===== Создание пользовательского сертификата,​ подписанного CA ===== ===== Создание пользовательского сертификата,​ подписанного CA =====
Line 315: Line 379:
 ==== Создание запроса на сертификат ==== ==== Создание запроса на сертификат ====
 <​code>​ <​code>​
-$ openssl req -new -key user1.key -out user1.req+$ openssl req -new -key user1.key -out user1.req ​#-sha256
 ... ...
-Organizational Unit Name (eg, section) []:group1+Organizational Unit Name (eg, section) [noc]:group1
 Common Name (eg, YOUR name) []:user1 Common Name (eg, YOUR name) []:user1
-Email Address []:​user1@corpX.un+Email Address [noc@corpX.un]:​user1@corpX.un
 ... ...
 </​code>​ </​code>​
Line 338: Line 402:
 <​code>​ <​code>​
 $ openssl pkcs12 -export -in user1.crt -inkey user1.key -out user1.p12 -passout pass:​ppassword1 $ openssl pkcs12 -export -in user1.crt -inkey user1.key -out user1.p12 -passout pass:​ppassword1
 +openssl3# openssl pkcs12 -legacy -export -in user1.crt -inkey user1.key -out user1.p12 -passout pass:​ppassword1
  
 $ openssl pkcs12 -info -in user1.p12 $ openssl pkcs12 -info -in user1.p12
Line 351: Line 416:
  
 lan# openssl ca -gencrl -out /​var/​www/​html/​ca.crl lan# openssl ca -gencrl -out /​var/​www/​html/​ca.crl
 +
 +lan# openssl crl -text -noout -in /​var/​www/​html/​ca.crl | less
 +...
 +    Serial Number: 0M
 +...
 +    Serial Number: 0N
 +...
 </​code>​ </​code>​
пакет_openssl.1593085326.txt.gz · Last modified: 2020/06/25 14:42 by val