mirror of
https://github.com/curl/curl.git
synced 2026-07-26 00:07:17 +03:00
SSL: implement public key pinning
Option --pinnedpubkey takes a path to a public key in DER format and only connect if it matches (currently only implemented with OpenSSL). Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt(). Extract a public RSA key from a website like so: openssl s_client -connect google.com:443 2>&1 < /dev/null | \ sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \ | openssl rsa -pubin -outform DER > google.com.der
This commit is contained in:
parent
d1b56d0043
commit
93e450793c
20 changed files with 311 additions and 2 deletions
|
|
@ -215,6 +215,7 @@ static const struct LongShort aliases[]= {
|
|||
{"Em", "tlsauthtype", TRUE},
|
||||
{"En", "ssl-allow-beast", FALSE},
|
||||
{"Eo", "login-options", TRUE},
|
||||
{"Ep", "pinnedpubkey", TRUE},
|
||||
{"f", "fail", FALSE},
|
||||
{"F", "form", TRUE},
|
||||
{"Fs", "form-string", TRUE},
|
||||
|
|
@ -1353,6 +1354,11 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
|
|||
GetStr(&config->login_options, nextarg);
|
||||
break;
|
||||
|
||||
case 'p': /* Pinned public key DER file */
|
||||
/* Pinned public key DER file */
|
||||
GetStr(&config->pinnedpubkey, nextarg);
|
||||
break;
|
||||
|
||||
default: /* certificate file */
|
||||
{
|
||||
char *certname, *passphrase;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue