Skip to content

Commit

Permalink
CURLOPT_PINNEDPUBLICKEY.3: Improve pubkey extraction example
Browse files Browse the repository at this point in the history
- Show how a certificate can be obtained using OpenSSL.

Bug: #430
Reported-by: Daniel Hwang
  • Loading branch information
jay committed Sep 14, 2015
1 parent 202162d commit b550a1c
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
Expand Up @@ -59,10 +59,24 @@ if(curl) {
If you do not have the server's public key file you can extract it from the
server's certificate.
.nf
# retrieve the server's certificate if you don't already have it
#
# be sure to examine the certificate to see if it is what you expected
#
# Windows-specific:
# - Use NUL instead of /dev/null.
# - OpenSSL may wait for input instead of disconnecting. Hit enter.
# - If you don't have sed, then just copy the certificate into a file:
# Lines from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----.
#
openssl s_client -servername www.test.com -connect www.test.com:443 < /dev/null | sed -n "/-----BEGIN/,/-----END/p" > www.test.com.pem

# extract public key in pem format from certificate
openssl x509 -in www.test.com.pem -pubkey -noout > www.test.com.pubkey.pem

# convert public key from pem to der
openssl asn1parse -noout -inform pem -in www.test.com.pubkey.pem -out www.test.com.pubkey.der

# sha256 hash and base64 encode der to string for use
openssl dgst -sha256 -binary www.test.com.pubkey.der | openssl base64
.fi
Expand Down

0 comments on commit b550a1c

Please sign in to comment.