J'essaie d'obtenir une authentification mutuelle SSL entre deux serveurs LAMP.Authentification SSL mutuelle avec PHP SOAP
J'ai actuellement 3 serveurs. L'un étant le maître et les deux autres sont des clients qui font des appels SOAP.
Sur le maître et un client, j'ai installé des certificats SSL Comodo Postive. Je peux me connecter de ce client au maître et faire réussir l'authentification SSL.
Sur le second client, j'ai installé un certificat Lets Encrypt. J'ai obtenu le certificat racine de leur site Web (et vérifié également qu'il était correct en utilisant https://whatsmychaincert.com).
Ce serveur échoue l'appel de savon. J'ai vérifié l'erreur httpd journal sur le maître et il a ceci:
SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]
Ma compréhension est que cela signifie que le client ne vérifie pas le certificat du MASTER.
Si j'utilise cURL à partir de la ligne de commande sur ce client qui fonctionne. J'appelle cURL comme ceci:
curl -v --cert /etc/letsencrypt/live/ssl3.demoserver.co.za/cert.pem
--cacert /etc/letsencrypt/live/ssl3.demoserver.co.za/combined.crt
--key /etc/letsencrypt/live/ssl3.demoserver.co.za/privkey.pem
https://ssl2.demoserver.co.za/index.php
Dans ce cas combined.crt est un fichier à la fois la chaîne comodo et la chaîne letsencrypt concaténer.
Le fichier PHP ressemble à ceci:
<?php
$contextOptions = array(
'ssl' => array(
'verify_peer' => true,
'cafile' => '/etc/letsencrypt/live/ssl3.demoserver.co.za/combined.crt',
'local_cert' => '/etc/letsencrypt/live/ssl3.demoserver.co.za/keycert.pem',
'verify_depth' => 5,
'disable_compression' => true,
'SNI_enabled' => true
)
);
$sslContext = stream_context_create($contextOptions);
$options2 = array(
'uri' => 'https://ssl2.demoserver.co.za',
'location' => 'https://ssl2.demoserver.co.za/Soap.php',
'trace' => 1,
'stream_context' => $sslContext
);
$client = new SoapClient(NULL, $options2);
print "<span style=\"color:green;\">'".$client->GetData()."'<span>";
?>
Le fichier keycert.pem est une concaténation de la clé privée et le certificat.
Tous les serveurs sont Centos7 avec php 5.4.16