Openssl pour du telnet en mode sécurisé
Pourquoi openSSL ?
L’article suivant nous montrait l’intérêt que pouvait avoir le Telnet pour vérifier des services sur un serveur distant. Pour cela, il suffit d’indiquer l’hôte et le port distant à la commande telnet. Cependant dans le cas d’un service sécurisé avec SSL, la commande Telnet ne peut plus fonctionner. L’objectif de cet article est de montrer à travers l’exemple d’une connexion en IMAPS (IMAP en SSL) l’utilisation de la commande openSSL sous Linux en mode “client Telnet”.
La commande s’utilisera de la manière suivante:
openssl s_client -connect hote:port
Exemple en IMAPS
Prenons l’exemple du serveur IMAPS d’Alinto : secure.alinto.net avec lequel nous souhaiterions valider une connexion IMAP sur le port 993 (il s’agit du port standard de l’IMAPS) :
openssl s_client -connect secure.alinto.net:993 CONNECTED(00000003) depth=0 serialNumber = Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys, C = FR, O = *.alinto.net, OU = GT75940822, OU = See www.rapidssl.com/resources/cps (c)10, OU = Domain Control Validated - RapidSSL(R), CN = *.alinto.net verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 serialNumber = Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys, C = FR, O = *.alinto.net, OU = GT75940822, OU = See www.rapidssl.com/resources/cps (c)10, OU = Domain Control Validated - RapidSSL(R), CN = *.alinto.net verify error:num=27:certificate not trusted verify return:1 depth=0 serialNumber = Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys, C = FR, O = *.alinto.net, OU = GT75940822, OU = See www.rapidssl.com/resources/cps (c)10, OU = Domain Control Validated - RapidSSL(R), CN = *.alinto.net verify error:num=21:unable to verify the first certificate verify return:1 --- Certificate chain 0 s:/serialNumber=Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys/C=FR/O=*.alinto.net/OU=GT75940822/OU=See www.rapidssl.com/resources/cps (c)10/OU=Domain Control Validated - RapidSSL(R)/CN=*.alinto.net i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority --- Server certificate -----BEGIN CERTIFICATE----- MIID/jCCA2egAwIBAgIDFLVsMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwOTI5MTA1ODAyWhcNMTIxMTMwMTEyNzMy WjCB3zEpMCcGA1UEBRMgSGtyNFNoZWhLNFFTbEJsWXU5akZsdHRsV1BWbEFpeXMx CzAJBgNVBAYTAkZSMRUwEwYDVQQKDAwqLmFsaW50by5uZXQxEzARBgNVBAsTCkdU NzU5NDA4MjIxMTAvBgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29tL3Jlc291cmNl cy9jcHMgKGMpMTAxLzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZhbGlkYXRlZCAt IFJhcGlkU1NMKFIpMRUwEwYDVQQDDAwqLmFsaW50by5uZXQwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCSME3C+1Qk3mgpRlKminqDRziajC3zYx2nQzNr vnxumWzynRS6eLlWQ7MSnGx9uZPyKQD+cIlblmCyiReoLFZWK911RU1ai9vZB9w5 9xJALUM7IQR1+eYNfIEZASmbcLBEE1CnIBE0LEhbmyVMtMWk9vMb5t1f6cuWbCOS 4TLBwGaVofwMwIrG+5m17pfjACzC5MT+YleZzn6YY6qjUkB5Yj+j9d+p1L2LLioT 3SxCJJTGAMrFBhmWRNMUFxD9271fAhtwEAH1BJ/ezCpERQNuJr2T82JGtr+Ik0qo oaLQmVvCu/YJR9adtMLviFgFrknmgF9pySmetOc/m3Z0+p6DAgMBAAGjgdMwgdAw HwYDVR0jBBgwFoAUSOZo+SvSspXXR9gjIBBPM5iQn9QwDgYDVR0PAQH/BAQDAgTw MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAjBgNVHREEHDAaggwqLmFs aW50by5uZXSCCmFsaW50by5uZXQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2Ny bC5nZW90cnVzdC5jb20vY3Jscy9zZWN1cmVjYS5jcmwwHQYDVR0OBBYEFChMrpnx v9N1PD8RMZDfdRajotD4MA0GCSqGSIb3DQEBBQUAA4GBAKC/EvbzG+Hs0cAB+Ljm 4dXlOhQE5WBEjb5dty7+dmY1yI5wIvlZPYcAhugmsA9Ot4WtnxFMRvBd1T3cAA1Z qxYSCZ1v6VU/f46BEtfLSqi1oHVftsj2XA0JtzlsxOA5aPSiwDBi3Xs572Dv7ZQl xU3feFHbVl0y3ni/rQe26lXC -----END CERTIFICATE----- subject=/serialNumber=Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys/C=FR/O=*.alinto.net/OU=GT75940822/OU=See www.rapidssl.com/resources/cps (c)10/OU=Domain Control Validated - RapidSSL(R)/CN=*.alinto.net issuer=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority --- No client certificate CA names sent --- SSL handshake has read 1204 bytes and written 479 bytes --- New, TLSv1/SSLv3, Cipher is AES256-SHA Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : SSLv3 Cipher : AES256-SHA Session-ID: 58107CB350857475C7A884FB069C910B1A5A265BE0B5852A4B748AD1702D7118 Session-ID-ctx: Master-Key: 9A8BD3D995928B29AAAFC31011BBF112D9D5B87BD67B0C7A40BC48387B747953B895B37E3E46BBA885D960F3B4589FFE Key-Arg : None PSK identity: None PSK identity hint: None Start Time: 1350295026 Timeout : 7200 (sec) Verify return code: 21 (unable to verify the first certificate) --- * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=PLAIN AUTH=PLAIN] IMAP server ready.
La dernière ligne nous indique que nous sommes connectés sur le serveur et prêts à envoyer des commandes IMAP. Il s’agit d’ailleurs de la même ligne que nous aurions eu en Telnet avec de l’IMAP non sécurisé:
telnet imap.alinto.net 143 Trying 83.145.109.160... Connected to imapa.alinto.net. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=PLAIN] IMAP server ready.
Comprendre la chaîne de certification
Vous pourrez remarquer que l’outil openSSL renvoie également toute la chaîne de certification:
Certificate chain 0 s:/serialNumber=Hkr4ShehK4QSlBlYu9jFlttlWPVlAiys/C=FR/O=*.alinto.net/OU=GT75940822/OU=See www.rapidssl.com/resources/cps (c)10/OU=Domain Control Validated - RapidSSL(R)/CN=*.alinto.net i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
La ligne commençant par 0 présente le certificat du serveur ainsi que l’autorité de certification dont il est issu.
Les lignes 1, 2… si elles existent peuvent reprendre le certificat de l’autorité précédente et y ajouter l’autorité de certification de niveau supérieur etc.
Ici la chaîne ne comporte qu’un certificat, ce dernier étant l’autorité de certification la plus haute qui se trouve dans les magasins de certificats des différents client IMAP.
Conclusion
Grâce à openSSL nous avons vu que nous pouvions nous connecter, et dialoguer avec un serveur au dessus d’un protocole sécurisé, SSL. L’IMAP est un des exemple d’application, mais le SMTPS, le HTTPS, le POPS, le LDAPS…