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 [2025/02/27 06:16] (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+faketime ​-f "​+500d"​ wget -q -O /dev/null https://webinar7.bmstu.ru ​&& echo Ok || echo Err
  
-$ openssl s_client -showcerts ​-connect ​webinar6.bmstu.ru:443 2>/​dev/​null | openssl ​x509 -noout -dates+$ openssl s_client -starttls smtp -crlf -connect ​mailhub.bmstu.ru:25 
 +openssl ​s_client ​-connect server.corp13.un:​993 ​-crlf
  
-$ faketime -f "​+500d"​ ... +lan# openssl s_client -cert user1.crt -key user1.key -connect www.corpX.un:​443
- +
-$ openssl s_client -CApath /​etc/​ssl/​certs/​ -starttls smtp -crlf -connect mailhub.bmstu.ru:​25 +
- +
-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 46:
 ==== Создание пары приватный/​публичный ключ ==== ==== Создание пары приватный/​публичный ключ ====
 <​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 70:
 <​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 93:
 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 99:
 </​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 129:
 ==== 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 142:
 ... ...
  
-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 189:
  
 ==== Настройка атрибутов базы 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 197:
 ... ...
 [ 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 226: Line 260:
 ==== Инициализация списка отозванных сертификатов ==== ==== Инициализация списка отозванных сертификатов ====
 <​code>​ <​code>​
-lan# openssl ca -gencrl -out /​var/​www/​html/​ca.crl+lan# openssl ca -gencrl ​-crldays 365 -out /​var/​www/​html/​ca.crl
 </​code><​code>​ </​code><​code>​
 Enter pass phrase for ./​CA/​ca.key:​Pa$$w0rd Enter pass phrase for ./​CA/​ca.key:​Pa$$w0rd
Line 236: Line 270:
 <​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 286:
 </​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 316:
 ==== Подпись запроса на сертификат центром сертификации ==== ==== Подпись запроса на сертификат центром сертификации ====
 <​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 343:
  
 ==== Проверка подписи сертификата ==== ==== Проверка подписи сертификата ====
 +
 +  * [[#​Просмотр содержимого файла сертификата]]
 <​code>​ <​code>​
 www# wget http://​lan.corpX.un/​ca.crt www# wget http://​lan.corpX.un/​ca.crt
Line 314: Line 379:
 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 400:
 <​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 343: Line 413:
 lan# less CA/​index.txt lan# less CA/​index.txt
  
-lan# openssl ca -gencrl -out /​var/​www/​html/​ca.crl+lan# openssl ca -gencrl ​-crldays 365 -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