====== Linux SSL ====== * проверить сертификаты [[https://www.ssllabs.com/ssltest/analyze.html?d=ip2u.ru&latest|SSLabs test https]] * сайт рассказывающий про технические детали SSL TLS https://tls.dxdt.ru * Управление сертификатами - https://github.com/cloudflare/cfssl * книга все что нужно знать - [[https://drive.google.com/file/d/1dIeaGXgGDRMHExbeFx8xWAPx_aElpmo7/view?usp=sharing|TLS Mastery]] * https://medium.com/@seabro/how-to-create-selfsigned-ca-and-custom-wildcard-ssl-certificate-1112ed2080f7 ===== SSl certificates ===== # Example get and install https://discuss.elastic.co/t/error-response-from-daemon-get-https-docker-elastic-co-v2-x509-certificate-signed-by-unknown-authority/281754 curl --trace - https://docker.elastic.co:443 cd ~ openssl s_client -showcerts -connect www.domain.com:443 /dev/null|openssl x509 -outform PEM >domain.com.crt sudo cp domain.com.crt /usr/local/share/ca-certificates sudo update-ca-certificates openssl s_client -connect bot.ip2u.ru:4443 -showcerts openssl s_client -showcerts -connect www.domain.com:443 openssl s_client -showcerts -connect bot.ip2u.ru:4443 /dev/null|openssl x509 -outform PEM >ip2u_ru.crt cat ./ip2u_ru.crt sudo cp ./ip2u_ru.crt /usr/local/share/ca-certificates/ip2u.ru.crt sudo update-ca-certificates openssl s_client -showcerts -connect bot.ip2u.ru:4443 openssl s_client -CAfile ./ip2u_ru.crt -connect bot.ip2u.ru:4443 curl --verbose bot.ip2u.ru:4443 ===== Linux SSL key managment ===== * update ca certificate on ubuntu https://www.dmosk.ru/miniinstruktions.php?mini=root-ca-linux * https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-centos-8-ru - centos ca * https://jamielinux.com/docs/openssl-certificate-authority/ - manual ca * https://smallstep.com/hello-mtls/doc/server/nginx - cert auth nginx * https://github.com/smallstep/cli#installation-guide - pki script managment * https://github.com/OpenVPN/easy-rsa asy-rsa is a CLI utility to build and manage a PKI CA ===== Linux MTLS ===== https://get.localhost.direct/ \\ * https://victoronsoftware.com/posts/mtls/ * https://smallstep.com/hello-mtls/doc/server/nginx - cert auth nginx * https://www.dmosk.ru/miniinstruktions.php?mini=nginx-mtls#client ===== OpenSSL key manipulating ===== ssh-keygen -l -f ./id_rsa_1.pub 4096 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXX8 m@domain.ru (RSA) openssl pkey -in ./id_rsa_1.pub -noout -text ===== SSL.https test TLS/sll ===== # проверить установление соединение - можно указать версию -tls1 -tls1_2 openssl s_client -servername ip2u.ru -tlsextdebug -connect ip2u.ru:443 wget -v --debug https://127.0.0.1:443 --header "Host: wiki.ip2u.net" # -k insecure curl -v -H 'Host: wiki.ip2u.ru' https://127.0.0.1:443/something # CURL проверить корректность установки сертификата date; curl -vIs4 https://wiki.ip2u.ru 2>&1 | egrep -i "(connected|* ssl|issuer|subject)" Sat Jun 11 19:31:48 +05 2022 * Connected to wiki.ip2u.ru (172.67.198.111) port 443 (#0) * SSL connection using TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305 * subject: CN=*.ip2u.ru * subjectAltName: host "wiki.ip2u.ru" matched cert's "*.ip2u.ru" * issuer: C=US; O=Let's Encrypt; CN=E1 * SSL certificate verify ok. # проверить сертификат на origin server cloudflare curl -svo /dev/null --resolve wiki.ip2u.ru:443:212.237.56.234 https://wiki.ip2u.ru/ * Added wiki.ip2u.ru:443:212.237.56.234 to DNS cache * Hostname wiki.ip2u.ru was found in DNS cache * Trying 212.237.56.234:443... * TCP_NODELAY set * Connected to wiki.ip2u.ru (212.237.56.234) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs } [5 bytes data] * TLSv1.3 (OUT), TLS handshake, Client hello (1): } [512 bytes data] * TLSv1.3 (IN), TLS handshake, Server hello (2): { [122 bytes data] * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): { [25 bytes data] * TLSv1.3 (IN), TLS handshake, Certificate (11): { [1321 bytes data] * TLSv1.3 (OUT), TLS alert, unknown CA (560): } [2 bytes data] * SSL certificate problem: unable to get local issuer certificate * Closing connection 0 ===== SSL.https install certificate CA ===== # Install certificate and chains - check GOST ciper STR=$(openssl ciphers| sed 's/:/\n/g' | grep -i gost) echo $STR openssl s_client -showcerts -verify 5 -connect esia.gosuslugi.ru:443 openssl x509 -in server_cert_esia.pem -noout -text # выгружаем сертификаты, переходим по iisue uri и загружаем CRT друг за другом до CA # download CA wget http://reestr-pki.ru/cdp/guc_gost12.crt # der->pem конвертация openssl x509 -inform der -in guc_gost12.crt -out GUC_gost12.pem # проверить информацию openssl x509 -in GUC_gost12.pem -noout -text # установить CA debian cp GUC_gost12.pem /usr/local/share/ca-certificates/GUC_gost12.crt update-ca-certificates #проверить #info: #cert guc_gost12.crt #/usr/share/ca-certificates #/usr/local/share/ca-certificates curl -vvv https://esia.gosuslugi.ru/