gpt4 book ai didi

clojure - 如何使用 Clojure 检查 TLS 证书到期日期?

转载 作者:行者123 更新时间:2023-12-02 00:23:26 24 4
gpt4 key购买 nike

通常我使用 openssl 命令检查服务器的证书过期时间,但我正在学习 Clojure,并且真的很想弄清楚如何在不调用 shell 命令的情况下执行此操作(如果可能的话)。

我将如何复制此功能?

$ openssl s_client -connect google.com:443 < /dev/null ^ /dev/null | openssl x509 -noout -enddate | awk -F'=' '{print $2}'
Apr 17 09:15:00 2019 GMT

最佳答案

可以通过 interop 使用 Java API 在 Clojure 中获取和检查服务器证书.

假设服务器使用 HTTPS,可以从 javax.net.ssl.HttpsURLConnection 检索证书实例一旦处于连接状态。通过调用 getInputStream 方法建立连接,getServerCertifcates 方法将服务器证书作为 java.security.cert.X509Certificate 的数组返回。 .要获取 HttpsURLConnection 实例,我们必须在 java.net.URL 上调用 openConnection 方法。 X509Certificate 的方法 getNotAfter 返回证书到期日期。

在 Clojure 中,它看起来像这样:

(ns foo.core
(:require [clojure.java.io :as io]))

(defn get-server-certs [from]
(let [url (io/as-url from)
conn (.openConnection url)]
(with-open [_ (.getInputStream conn)]
(.getServerCertificates conn))))

(.getNotAfter (first (get-server-certs "https://www.google.com")))
;;=> #inst "2019-04-17T09:15:00.000-00:00"

关于clojure - 如何使用 Clojure 检查 TLS 证书到期日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54612465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com