Haz todo lo posible por interpretar el código bien previamente a adaptarlo a tu proyecto si ttienes algo que aportar puedes compartirlo con nosotros.
Solución:
Solución 1:
Para descargar el certificado, debe usar el cliente integrado en openssl de la siguiente manera:
echo -n | openssl s_client -connect HOST:PORTNUMBER
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$SERVERNAME.cert
Eso guardará el certificado en /tmp/$SERVERNAME.cert
.
Puedes usar -showcerts
si desea descargar todos los certificados de la cadena. Pero si solo desea descargar el certificado del servidor, no es necesario especificar -showcerts
echo -n
da una respuesta al servidor, para que se libere la conexión
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
elimina información sobre la cadena de certificados y los detalles de conexión. Este es el formato preferido para importar el certificado a otros almacenes de claves.
Solución 2:
Encontré la respuesta. Openssl lo proporciona.
openssl s_client -conectar $REMHOST:$REMPORT
Solución 3:
La herramienta de cliente GNUTLS, gnutls-cli
también puede hacer esto fácil:
gnutls-cli --print-cert www.example.com
< /dev/null
> www.example.com.certs
El programa está diseñado para proporcionar un cliente interactivo al sitio, por lo que debe darle una entrada vacía (en este ejemplo, desde /dev/null
) para finalizar la sesión interactiva.
Solución 4:
true | openssl s_client -connect google.com:443 2>/dev/null | openssl x509
este modo de openssl espera stdin, por lo que lo proporcionamos a través de true |
esto se conecta al servidor especificado en el parámetro -connect. 2>/dev/null
silencia los errores (opcional), podemos pasar toda la salida al analizador x509, especificando /dev/stdin
para usar la tubería de shell como el archivo de entrada. Y eso generará solo el -----BEGIN CERTIFICATE-----
a -----END CERTIFICATE-----
parte de la s_client
producción. Puede redirigir eso a un archivo agregando > google.com.pem
hasta el final del comando.
Lo mejor que puedo decir es que esto no verifica la cadena de certificados, solo puede decirle qué identidad SSL proporciona el servidor final.
Solución 5:
basado en la respuesta de @bignose, aquí hay una versión independiente que encaja bien, por ejemplo, en una receta de chef:
sudo apt-get install gnutls-bin
gnutls-cli --print-cert myserver.com myserver.crt
sudo cp myserver.crt /usr/local/share/ca-certificates/myserver.crt
sudo update-ca-certificates
Más adelante puedes encontrar los informes de otros desarrolladores, tú igualmente tienes la habilidad dejar el tuyo si lo crees conveniente.