summaryrefslogtreecommitdiff
path: root/bin-src/crtsh-getcerts
blob: f01a4c78b6c3af913b2a624132ce9c0429e13a2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env ruby
require 'nokogiri'
require 'open-uri'

certs = {}
ARGV.each do |domain|
	[ domain, "%.#{domain}" ].each do |pattern|
		Nokogiri::XML(URI.open("https://crt.sh/atom?"+URI.encode_www_form("identity" => pattern, "exclude" => "expired"))).css('feed > entry').each do |entry|
			url = entry.css('id').first.text.split("#").first

			updated = entry.css('updated').first.text

			html = Nokogiri::HTML(entry.css('summary').first.text)
			html.css('br').each{|br| br.replace("\n")}
			pem = html.css('div').first.text

			lines = pem.split("\n")
			lines.insert(1, "X-Crt-Sh-Url: #{url}", "X-Crt-Sh-Updated: #{updated}")
			pem = lines.join("\n")+"\n"

			certs[url] = pem
		end
	end
end

certs.each do |url, pem|
	print pem
end