diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-08-02 10:18:30 -0700 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-08-03 22:17:04 -0700 |
commit | d6c15ec6ccdad7b66ae3f5112de5e8c0d735462e (patch) | |
tree | 914bf9dd4c38916ec1409d00c3e20fce7ea8394d | |
parent | f23b3043cda15e18b96a583471ac069b5a8e80e4 (diff) |
crt.sh reliability
-rw-r--r-- | Makefile | 11 | ||||
-rwxr-xr-x | bin-src/crtsh-getcerts | 6 |
2 files changed, 11 insertions, 6 deletions
@@ -12,7 +12,7 @@ NET-%: date > $@ .DELETE_ON_ERROR: -.SECONDARY: +.NOTINTERMEDIATE: .PHONY: FORCE # bin/ @@ -39,9 +39,14 @@ public/%.css: public/%.scss public/index.html: public/tls.html.part public/crtsh.html.part public/diff.html.part public/jarmon.html.in -public/crtsh.pem: bin/crtsh-getcerts cfg/domains.txt NET-crtsh +public/crtsh-%.atom: NET-crtsh @mkdir -p '$(@D)' - bin/crtsh-getcerts $$(sed 's/#.*//' cfg/domains.txt) > $@ + rm -f -- $@ + set -x; while ! grep --quiet '<entry' $@ 2>/dev/null; do \ + curl 'https://crt.sh/atom?identity=%25.$*&exclude=expired' >$@ || rm -f -- $@; \ + done +public/crtsh.pem: bin/crtsh-getcerts cfg/domains.txt $(foreach d,$(shell sed 's/#.*//' cfg/domains.txt),public/crtsh-$d.atom) + bin/crtsh-getcerts $(filter %.atom,$^) >$@ public/tls.pem: bin/tls-getcerts cfg/sockets.txt NET-tls @mkdir -p '$(@D)' diff --git a/bin-src/crtsh-getcerts b/bin-src/crtsh-getcerts index f01a4c7..9831555 100755 --- a/bin-src/crtsh-getcerts +++ b/bin-src/crtsh-getcerts @@ -3,9 +3,9 @@ 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| +ARGV.each do |domain_atom| + File.open(domain_atom) do |fh| + Nokogiri::XML(fh).css('feed > entry').each do |entry| url = entry.css('id').first.text.split("#").first updated = entry.css('updated').first.text |