Gestion des certificats auto-signés
Récupération d’un certificat
Avec OpenSSL
Aprés avoir installé et lancé le programme, on peut récupérer des certificats pour différents protocoles :
http
s_client -connect smtp.gmail.com:465
ftp avec tls
s_client -connect qlf-ftpssl.pci.aw.atosorigin.com:20001 -starttls ftp
smtp avec tls
s_client -connect smtp.gmail.com:587 -starttls smtp
Création du certificat crt
Après avoir exécuté la commande, il faut copier les lignes depuis la ligne BEGIN CERTIFICATE (comprise) jusqu’à la ligne (END CERTIFICATE) puis un saut de ligne.
Il faut ensuite convertir le fichier obtenu en UTF-8 vec Notepad++.
Génération d’un keyStore Java (JKS)
| C:\Program Files\Java\jdk1.8.0_121\bin>keytool -importcert-trustcacerts-aliasintermediate -fileC:\FTP\myCert.crt -keystoreC:\FTP\keystore.jks | 
Lister les certificats présents dans un keyStore
| keytool -v -list -keystore keystore.jks | 
Ajouter un certificat à un keyStore existant
| keytool -import-alias "myCert"-file myCert.crt -keystore keystore.jks | 
Chargement du fichier JKS dans un objet KeyStore
| KeyStore ks = KeyStore.getInstance("JKS");Resource jks = newClassPathResource("keystore.jks");ks.load(jks.getInputStream(), "password_choisi_lors_de_la_creation_du_jks".toCharArray()); | 
Utilisation avec RestTemplate pour des connexions SSL en REST
| @BeanpublicRestTemplate restTemplate() throwsException {    KeyStore ks = ...    SSLConnectionSocketFactory socketFactory = newSSLConnectionSocketFactory(        newSSLContextBuilder().loadTrustMaterial(null, newTrustSelfSignedStrategy())            .loadKeyMaterial(ks, passwordJks.toCharArray()).build(), NoopHostnameVerifier.INSTANCE);    HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();    ClientHttpRequestFactory requestFactory = newHttpComponentsClientHttpRequestFactory(httpClient);    returnnewRestTemplate(requestFactory);} | 
|  | 
