diff options
author | Linus Nordberg <linus@nordu.net> | 2017-01-23 15:44:55 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2017-01-23 15:44:55 +0100 |
commit | 7b114604595b2e3bb0816ffb01548b02c43cdea5 (patch) | |
tree | 881d8fba74ed5197c51394845e65ef79f8838ae4 /src/plop_httputil.erl | |
parent | 2fa46317bdd4da077d932c58a150cecf08248be2 (diff) | |
parent | 784f116ba3fad8e28ef2fefd86d5df71801dbe6f (diff) |
Merge remote-tracking branch 'refs/remotes/map/config-api-key'
Diffstat (limited to 'src/plop_httputil.erl')
-rw-r--r-- | src/plop_httputil.erl | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plop_httputil.erl b/src/plop_httputil.erl index 37e25c1..af4a5d1 100644 --- a/src/plop_httputil.erl +++ b/src/plop_httputil.erl @@ -59,15 +59,25 @@ verify_fun(Cert, valid_peer, UserState) -> {valid, UserState} end. +read_and_verify_cacertfile(Filename) -> + {ok, PemBin} = file:read_file(Filename), + [KeyPem] = public_key:pem_decode(PemBin), + {'Certificate', Der, _} = KeyPem, + CalculatedHash = crypto:hash(sha256, Der), + CorrectHash = application:get_env(catlfish, https_cacert_fingerprint, none), + CorrectHash = CalculatedHash, + Der. + request(DebugTag, URL, Headers, RequestBody) -> Starttime = os:timestamp(), ParsedURL = hackney_url:parse_url(URL), CACertFile = application:get_env(catlfish, https_cacertfile, none), + CACert = read_and_verify_cacertfile(CACertFile), #hackney_url{path = Path, host = Host} = ParsedURL, lager:debug("~s: sending http request to ~p", [DebugTag, URL]), case hackney:connect(ParsedURL, - [{ssl_options, [{cacertfile, CACertFile}, + [{ssl_options, [{cacerts, [CACert]}, {verify, verify_peer}, {verify_fun, {fun verify_fun/3, [{check_hostname, Host}]}} |