以编程方式检查网站的SSL证书是否过期

时间:2013-10-04 03:09:26

标签: python ruby ssl https tdd

如何使用常见的脚本语言(如python,ruby或bash)完成此操作?即,我想写一个脚本,它将返回“有效”或“过期”的结果。看起来具有openssl选项的s_client程序可能会执行此操作,或返回可以检查的结果。

啊哈:默认情况下,curl会验证网站的证书。如果它已过期,它将返回这样的消息:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

不是很具体,但很明显证书有失败。它链接到此页面以获取信息:http://curl.haxx.se/docs/sslcerts.html

1 个答案:

答案 0 :(得分:0)

我发现ruby bindings for libcurl可以进行非常一般的测试:

$ gem install curb
$ pry
[1] pry(main)> require 'curl'
=> true
[2] pry(main)> Curl.get('https://site-with-expired-cert.com')
Curl::Err::SSLCACertificateError: Curl::Err::SSLCACertificateError
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/curb-0.8.5/lib/curl/easy.rb:62:in `perform'
[3] pry(main)> Curl.get('https://github.com')
=> #<Curl::Easy https://github.com>