summaryrefslogtreecommitdiff
path: root/src/plop_httputil.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2017-01-23 15:44:55 +0100
committerLinus Nordberg <linus@nordu.net>2017-01-23 15:44:55 +0100
commit7b114604595b2e3bb0816ffb01548b02c43cdea5 (patch)
tree881d8fba74ed5197c51394845e65ef79f8838ae4 /src/plop_httputil.erl
parent2fa46317bdd4da077d932c58a150cecf08248be2 (diff)
parent784f116ba3fad8e28ef2fefd86d5df71801dbe6f (diff)
Merge remote-tracking branch 'refs/remotes/map/config-api-key'
Diffstat (limited to 'src/plop_httputil.erl')
-rw-r--r--src/plop_httputil.erl12
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}]}}