Simpan Remote SSL Certificate melalui Linux Command Line

28

Bisakah Anda memikirkan metode baris perintah linux untuk menyimpan sertifikat yang disajikan oleh server HTTPS? Sesuatu di sepanjang garis memiliki curl / wget / openssl membuat koneksi SSL dan menyimpan sertifikat daripada konten respon HTTP.

Gui setara dengan apa yang saya cari adalah untuk menelusuri ke situs HTTPS, klik dua kali ikon browser "situs aman", dan ekspor sertifikat. Kecuali tujuannya di sini adalah melakukannya secara non-interaktif.

Terima kasih, Jim


sumber

Jawaban:

40

Sesuatu seperti:

openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem

Itulah yang saya gunakan dengan fetchmail untuk mengambil sertifikat server IMAP atau POP3 yang mampu SSL (kecuali jelas saya tidak menggunakan port 443)

(Perhatikan bahwa -servernameparameter "redundant" diperlukan untuk opensslmelakukan permintaan dengan dukungan SNI.)

Cry Havok
sumber
1
Adakah cara untuk mendapatkan rantai penuh?
Collin Anderson
9

Dari http://www.madboa.com/geek/openssl/#cert-retrieve

#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Matt Simmons
sumber