确认当前域名下证书是否全部更换完成
工作中公司域名有很多个,尤其是用泛域名更换起来极其麻烦,好不容易更换之后,有遗漏或者更换没有生效的事情也会发生,在每个确认一遍就比较麻烦,下面是一个确认配置文件中所有域名是否更换完成的脚本,需要的请自行获取,本人只求一个关注和点赞,评论,谢谢。
package main
import (
"bufio"
"fmt"
"io"
"net/http"
"os"
)
func getTlsNotAfter(url string) {
get, err := http.Get(url)
if err != nil {
fmt.Println(url, "没有添加https", err)
return
}
// 不是当前年 + 1 到期的
if get.TLS.PeerCertificates[0].NotAfter.Year() != time.Now().Year() + 1 {
// 打印证书到期时间
fmt.Println(url, get.TLS.PeerCertificates[0].NotAfter)
saveLog(url, get.TLS.PeerCertificates[0].NotAfter)
}
}
func saveLog(log string, dataTime interface{}) {
// 打开一个文件
// 存放结果的日志文件
file, err := os.OpenFile("./my.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
return
}
defer file.Close()
writeLog := fmt.Sprintf("%s %s\n", log, dataTime)
file.WriteString(writeLog)
}
func main() {
// 存放需要查看的域名,可以直接使用云产品上面的导出功能,只要主机名即可 ,比如。www 这种,
open, err := os.Open("./log.txt")
if err != nil {
return
}
defer open.Close()
reader := bufio.NewReader(open)
for {
line, _, er := reader.ReadLine()
if er == io.EOF {
return
}
host := fmt.Sprintf("%s", line)
// 这里更换 根根域名,和上面文件中的对应起来test.com 更换成自己的即可
url := fmt.Sprintf("https://%s.test.com", host)
getTlsNotAfter(url)
}
}