Replace weirdness section with link to Debian bug report.
[ikiwiki.git] / doc / bugs / ssl_certificates_not_checked_with_openid.mdwn
index e3bd56cfdf81bb0e369911d607600e7a1a0e8626..80390622a12bdffa5ee54d403eff1c2bd635b020 100644 (file)
@@ -40,7 +40,7 @@ For now, I want to try and resolve the issues with net\_ssl\_test, and run more
 >> -- Brian May
 
 >>> I guess that the place to add SSL cert checking would be in either
->>> [[cpan LWPx::ParanoidAgent]] or [[cpan Net::OpenID::Consumer]]. Adding
+>>> [[!cpan LWPx::ParanoidAgent]] or [[!cpan Net::OpenID::Consumer]]. Adding
 >>> it to ikiwiki itself, which is just a user of those libraries, doesn't
 >>> seem right.
 >>> 
@@ -50,3 +50,34 @@ For now, I want to try and resolve the issues with net\_ssl\_test, and run more
 >>> that the SSL cert is issued by a trusted party and matches the domain name
 >>> of the site being connected to. I also don't personally think that SSL
 >>> certs are the right fix for DNS poisoning issues. --[[Joey]]
+
+I was a bit vague myself on the details on openid. So I looked up the standard.
+I was surprised to note that they have already considered these issues, in
+section 15.1.2, <http://openid.net/specs/openid-authentication-2_0.html#anchor41>.
+
+It says:
+
+"Using SSL with certificates signed by a trusted authority prevents these kinds of
+attacks by verifying the results of the DNS look-up against the certificate. Once
+the validity of the certificate has been established, tampering is not possible.
+Impersonating an SSL server requires forging or stealing a certificate, which is
+significantly harder than the network based attacks."
+
+With regards to implementation, I am surprised that the libraries don't seem to
+do this checking, already, and by default. Unfortunately, I am not sure how to test
+this adequately, see [[!debbug 466055]]. -- Brian May
+
+--- 
+
+I think [[!cpan Crypt::SSLeay]] already supports checking the certificate. The trick
+is to get [[!cpan LWP::UserAgent]], which is used by [[!cpan LWPx::ParanoidAgent]] to
+enable this checking.
+
+I think the trick is to set on of the the following environment variables before retrieving
+the data:
+
+$ENV{HTTPS\_CA\_DIR} = "/etc/ssl/certs/";  
+$ENV{HTTPS\_CA\_FILE} = "/etc/ssl/certs/file.pem";  
+
+Unfortunately I get weird results if the certificate verification fails [[!debbug 503440]].
+It still seems to work though, regardless.