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 [2023/12/25 11:01]
val [Добавление атрибутов в сертификат]
пакет_openssl [2024/08/22 08:13] (current)
val [Интерактивное подключение по ssl]
Line 14: Line 14:
  
 ===== Интерактивное подключение по ssl ===== ===== Интерактивное подключение по ssl =====
 +
 +  * [[Настройка терминалов]]
 +
 <​code>​ <​code>​
 $ openssl s_client -connect ru.wikipedia.org:​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 ​-showcerts ​-connect webinar6.bmstu.ru:​443 2>/dev/null | openssl x509 -noout -dates+faketime ​-f "​+500d"​ wget -q -O /​dev/​null ​https://​webinar7.bmstu.ru && echo Ok || echo Err
  
-faketime ​-f "​+500d" ​...+openssl s_client ​-starttls smtp -crlf -connect mailhub.bmstu.ru:25 
 +$ openssl s_client -connect server.corp13.un:​993 -crlf
  
-$ openssl s_client -CApath /​etc/​ssl/​certs/​ -starttls smtp -crlf -connect mailhub.bmstu.ru:​25 +lan# openssl s_client -cert user1.crt -key user1.key -connect www.corpX.un:​443
- +
-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 46: Line 48:
 ==== Создание пары приватный/​публичный ключ ==== ==== Создание пары приватный/​публичный ключ ====
 <​code>​ <​code>​
-user1@server:​~$ openssl genrsa 2048 > key.private+$ openssl genrsa 2048 > key.private
  
-user1@server:​~$ openssl rsa -pubout < key.private > key.public +$ openssl rsa -pubout < key.private > key.public
- +
-user1@server:​~$ scp key.public user2@www:+
 </​code>​ </​code>​
  
 ==== Шифрование данных ==== ==== Шифрование данных ====
 <​code>​ <​code>​
-user2@www:~$ openssl ​rsautl ​-encrypt -inkey key.public -pubin < data.txt > data.enc +openssl3$ openssl ​pkeyutl ​-encrypt -inkey key.public -pubin < data.txt > data.enc 
- +openssl1openssl rsautl -encrypt -inkey key.public -pubin < data.txt > data.enc
-user2@www:~scp data.enc ​user1@server:​+
  
-user1@server:​~$ openssl rsautl -decrypt -inkey key.private < data.enc > data.txt+openssl3$ openssl pkeyutl -decrypt -inkey key.private < data.enc | tee data.txt 
 +openssl1$ openssl rsautl -decrypt -inkey key.private < data.enc > data.txt
 </​code>​ </​code>​
  
 ==== Цифровая подпись ==== ==== Цифровая подпись ====
 <​code>​ <​code>​
-user1@server:​~$ openssl dgst -sha256 -sign key.private -out data.sign data.txt+$ openssl dgst -sha256 -sign key.private -out data.sign data.txt
  
-user1@server:​~$ scp data.* 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 74: Line 72:
 <​code>​ <​code>​
 # time openssl dhparam -out /​etc/​openvpn/​dh2048.pem 2048 # time openssl dhparam -out /​etc/​openvpn/​dh2048.pem 2048
-real    ​0m24.676s+... 
 +real    ​2m6.588s 
 +...
 </​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 -addext ​"subjectAltName=DNS:​server.corpX.un"+server# openssl req -new -x509 -days 3650 -key server.key -out server.crt -addext ​'subjectAltName=DNS:​server.corpX.un'
 </​code><​code>​ </​code><​code>​
 ... ...
Line 94: Line 95:
 State or Province Name (full name) [Some-State]:​Moscow region State or Province Name (full name) [Some-State]:​Moscow region
 Locality Name (eg, city) []:Moscow Locality Name (eg, city) []:Moscow
-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 ​      !!!! для некоторых сервисов (ovpn) не должно быть пустым Common Name (eg, YOUR name) []:​server.corpX.un ​      !!!! для некоторых сервисов (ovpn) не должно быть пустым
Line 100: Line 101:
 </​code>​ </​code>​
  
 +ИЛИ
 +
 +<​code>​
 +openssl genrsa -out wild.key 2048
 +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>​
Line 124: Line 131:
 ==== Debian ==== ==== Debian ====
 <​code>​ <​code>​
-server# cp corpX-PDC-CA.crt /​usr/​local/​share/​ca-certificates/​+# wget http://​lan.corpX.un/​ca.crt 
 + 
 +# cp ca.crt /​usr/​local/​share/​ca-certificates/​ 
 +  или 
 +# cp corpX-PDC-CA.crt /​usr/​local/​share/​ca-certificates/​ 
 +  или 
 +# cp wild.crt /​usr/​local/​share/​ca-certificates/​
  
 # update-ca-certificates # update-ca-certificates
Line 131: Line 144:
 ... ...
  
-server# ls /​etc/​ssl/​certs | grep corp+server# ls /​etc/​ssl/​certs | grep "​wild\|corp\|ca.pem"​
 ... ...
  
-server# openssl verify server.crt+# openssl verify server.crt
 server.crt: OK server.crt: OK
  
-# wget -O - https://​www.corpX.un+# curl -v 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 163: Line 191:
  
 ==== Настройка атрибутов базы 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 168: Line 199:
 ... ...
 [ 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 236: Line 272:
 <​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/​
Line 250: Line 288:
 </​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 259: Line 318:
 ==== Подпись запроса на сертификат центром сертификации ==== ==== Подпись запроса на сертификат центром сертификации ====
 <​code>​ <​code>​
-# cat www.ext +lan# openssl ca -days 365 -in www.req -out www.crt ​ # ​-extfile www.ext
-</​code><​code>​ +
-subjectAltName = @alt_names +
-[alt_names] +
-DNS.1 = www.corpX.un +
-</​code><​code>​ +
-lan# openssl ca -days 365 -in www.req -out www.crt -extfile www.ext+
  
 lan# cat CA/​index.txt lan# cat CA/​index.txt
  
 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>​
  
Line 280: Line 345:
  
 ==== Проверка подписи сертификата ==== ==== Проверка подписи сертификата ====
 +
 +  * [[#​Просмотр содержимого файла сертификата]]
 <​code>​ <​code>​
 www# wget http://​lan.corpX.un/​ca.crt www# wget http://​lan.corpX.un/​ca.crt
Line 314: Line 381:
 Email Address [noc@corpX.un]:​user1@corpX.un Email Address [noc@corpX.un]:​user1@corpX.un
 ... ...
 +</​code>​
 +ИЛИ
 +<​code>​
 +$ openssl req -new -key user1.key -out user1.req -subj '/​C=RU/​ST=Moscow region/​L=Moscow/​O=cko/​OU=group1/​CN=user1/​emailAddress=user1@corpX.un/'​
 </​code>​ </​code>​
  
Line 331: 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 344: 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.1703491283.txt.gz · Last modified: 2023/12/25 11:01 by val