Gerei certificados SSL usando os seguintes comandos:
C=PL
ST=Mazovia
L=Warsaw
O="PHP-HTTP"
CN="192.168.56.10"
openssl req -out ca.pem -new -x509 -subj "/C=$C/ST=$ST/L=$L/O=$O/CN=socket-server" -passout pass:password
openssl genrsa -out server.key
openssl req -key server.key -new -out server.req -subj "/C=$C/ST=$ST/L=$L/O=$O/CN=$CN" -passout pass:password
openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out server.pem -passin pass:password
openssl genrsa -out client.key
openssl req -key client.key -new -out client.req -subj "/C=$C/ST=$ST/L=$L/O=$O/CN=socket-adapter-client" -passout pass:password
openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -CAserial file.srl -out client.pem -passin pass:password
Então eu os apliquei ao daemon dockerd:
sudo cp ca.pem /root/.docker/
sudo cp server.key /root/.docker/key.pem
sudo cp server.pem /root/.docker/cert.pem
habilitou-os adicionando --tlsverify
( Alpine linux )
e conectado com sucesso ao endpoint /version do script PHP:
$client = (new CurlHttpClient([
// 'bindto' => '/var/run/docker.sock'
'cafile' => __DIR__ . '/../../../ssl-test/ca.pem',
'local_cert' => __DIR__ . '/../../../ssl-test/client.pem',
'local_pk' => __DIR__ . '/../../../ssl-test/client.key',
// 'verify_host' => false,
]));
$response = $client->request(
'GET',
'https://192.168.56.10:2376/version'
);
Eu gostaria de fazer essa conexão usando curl
um comando simples, mas qualquer que seja a combinação --cacert
ou --cert
opção que eu use, isso gera um erro. Como devo agrupar os arquivos de saída para fazer uma conexão funcional?
editar> Sistema: WSL2 Ubuntu 22.04.3 LTS