Outils pour utilisateurs

Outils du site


tech:notes_ssl_tls_https_client_openssl

Ceci est une ancienne révision du document !


Notes SSL/TLS HTTPS client OpenSSL

Voir :

Voir aussi :

Vérif cert

openssl s_client -showcerts -CAfile ca.crt -connect 192.168.56.101:7000 -servername acme.fr

Avoir des informations sur le certificat

openssl x509 -inform PEM -in mycertfile.pem -text -out certdata

Debug

curl -v --insecure --show-error --verbose --cacert mycertfile.pem https://acme.fr

Install CA certificat - Debian

mv cert.pem acme.fr.crt
cp acme.fr.crt /usr/local/share/ca-certificates/
#vim /etc/ca-certificates.conf
#dpkg-reconfigure ca-certificates
 
# RedHat
# update-ca-trust
 
# Debian
update-ca-certificates

Remove CA certificat - Debian

rm /usr/local/share/ca-certificates/plop.crt
 
 
# RedHat
# update-ca-trust
 
# Debian
#update-ca-certificates
 
update-ca-certificates -f

-f, --fresh : Fresh updates. Remove symlinks in /etc/ssl/certs directory.

Install CA certificat - RedHat

Voir :

  • trust (paquet RedHat p11-kit-trust ; paquet Debian p11-kit)
  • update-ca-trust (paquet ca-certificat)
cp ca.crt /etc/pki/ca-trust/source/anchors/
 
# Debian
# update-ca-certificates
 
# RedHat
update-ca-trust

Source : cat /etc/pki/ca-trust/source/README

Requette HTTP over SSL/TLS

(echo -ne "GET / HTTP/1.1\r\nHost: acme.fr\r\n\r\n" ; cat ) |openssl s_client -showcerts -CAfile ca.crt -connect acme.fr:443 -servername acme.fr

Test TLS HTTPS en ligne

Test TLS HTTPS hors ligne

Python

trustflag.py

"""Check AddTrust External CA Root
 
https://bugzilla.redhat.com/show_bug.cgi?id=1842174
"""
from __future__ import print_function
 
import socket
import ssl
import sys
 
try:
    from urllib2 import urlopen
except ImportError:
    from urllib.request import urlopen
 
X509_V_FLAG_TRUSTED_FIRST = 0x8000
URL = "https://addtrust-chain.demo.sslmate.com"
 
print(sys.version)
print(ssl.OPENSSL_VERSION)
print()
 
ctx = ssl.create_default_context()
assert ctx.verify_mode == ssl.CERT_REQUIRED
assert ctx.check_hostname == True
 
print("Try with default verify flags")
print("verify_flags", hex(ctx.verify_flags))
try:
    urlopen(URL, context=ctx)
except Exception as e:
    print("FAILED")
    print(e)
else:
    print("success")
print()
 
print("Try again with X509_V_FLAG_TRUSTED_FIRST")
ctx.verify_flags |= X509_V_FLAG_TRUSTED_FIRST
print("verify_flags", hex(ctx.verify_flags))
try:
    urlopen(URL, context=ctx)
except Exception as e:
    print("FAILED")
    print(e)
else:
    print("success")
print()

Pb

Le certificat téléchargé ne fonctionne pas

Curl Wget
Debian
RedHat

source : https://superuser.com/questions/97201/how-to-save-a-remote-server-ssl-certificate-locally-as-a-file

openssl s_client -showcerts -connect acme.fr:443 -servername acme.fr </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

OK sous Debian \ NOK sous RedHat

wget --ca-certificate=mycertfile.pem https://acme.fr:443/somepage

NOK sous Debian & RedHat

curl --show-error --verbose --cacert mycertfile.pem https://acme.fr:443/somepage

Solution

Utiliser -verify pour avoir la chaîne complète, c'est-à-dire télécharger nom seulement la clef publique de acme.fr, mais aussi la clef publique de la CA.

echo -n |openssl s_client -showcerts -verify 5 -connect 192.168.56.101:7000 -servername acme.fr > mycertfile.pem

Puis ne garder que la CA. Note : si la CA existe, dans le cas d'un certificat auto-signé, ça ne marchera pas. Pour Debian, il est possible d'installer le certificat comme si c'était celui d'une CA.

vim mycertfile.pem

Voir https://unix.stackexchange.com/questions/368123/how-to-extract-the-root-ca-and-subordinate-ca-from-a-certificate-chain-in-linux

tech/notes_ssl_tls_https_client_openssl.1748191293.txt.gz · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki