如何在go中驗證SSL憑證

閱讀時間約 5 分鐘

👨‍💻如何在go中驗證SSL憑證

因之前玩過監控證書,最近在接觸golang因此來看看有甚麼方法能夠取得憑證到期日,最後發現有crypto/tls這個module可以用,驗證步驟簡單三步如下

1. 確認網站是否有SSL證書

package main

import (
"crypto/tls"
)
func main() {
conn, err := tls.Dial("tcp", "example.com:80", nil)
if err != nil {
panic("Server doesn't support SSL certificate err: " + err.Error())
}
}

上述程式碼首先使用 tls.Dial 建立TLS連線,語法規則為

tls.Dial(protocol, website, tls config)

連線成功則返回一個tls.Conn

執行後會噴以下錯誤

panic: Server doesn't support SSL certificate err: tls: first record does not look like a TLS handshake

接著將網站改為google重新執行一次程式碼,沒有任何輸出表示正常,也代表網站有啟用SSL

package main

import (
"crypto/tls"
)
func main() {
conn, err := tls.Dial("tcp", "www.google.com:443", nil)
if err != nil {
panic("Server doesn't support SSL certificate err: " + err.Error())
}
}

2. 確認SSL憑證和網站hostname是否吻合

可使用conn.VerifyHostname驗證server的憑證與hostname是否吻合

package main

import (
"crypto/tls"
)
func main() {
conn, err := tls.Dial("tcp", "www.google.com:443", nil)
if err != nil {
panic("Server doesn't support SSL certificate err: " + err.Error())
}
err = conn.VerifyHostname("www.google.com")
if err != nil {
panic("Hostname doesn't match with certificate: " + err.Error())
}
}

3. 驗證SSL憑證的到期日

我們可以透過conn.ConnectionState().PeerCertificates來取得憑證,然後透過NotAfter來取得憑證到期日

package main

import (
"crypto/tls"
"fmt"
)
func main() {
conn, err := tls.Dial("tcp", "www.google.com:443", nil)
if err != nil {
panic("Server doesn't support SSL certificate err: " + err.Error())
}
err = conn.VerifyHostname("www.google.com")
if err != nil {
panic("Hostname doesn't match with certificate: " + err.Error())
}
expiry := conn.ConnectionState().PeerCertificates[0]
fmt.Printf("Issuer Name: %s\n", expiry.Issuer)
fmt.Printf("Expiry: %s \n", expiry.NotAfter.Format("2006-01-02"))
fmt.Printf("Common Name: %s \n", expiry.Issuer.CommonName)
}

📚Reference

17會員
83內容數
golang
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
在自閉症者的感官過度敏銳,常見的是聽覺。 因此,今天就來談談,從〝適應〞的角度,去進行自閉症者的聽覺減敏訓練。 先找出自閉症者的感到不舒服聲音類型 以其家人來說,要先觀察自閉症者感到不舒服的聲音類型,進行做足準備。 像最近,我在慈惠日間,問高姓自閉症者的感到不舒服聲音類型,結果,是恐怖類型。
相信看到今天新聞就知道,有時就算有注意路況,問題是,人算不如天算。 颱風天在外的自閉症者遇到因為強颱的肆虐,導致需要換別條路。 而就算有在適應的自閉症者,如何陪伴? 用事先找自閉症者喜愛的事物,在自閉症者的情緒到頂端之前,引開令自閉症者焦慮不安的當下 這不是要求自閉症者迴避,而是先安撫自閉症
相信颱風假對自閉症者而言,是感到開心的事。 因為,可以用不著去機構做累死人的〝活動〞了! 其實,事實完全沒有自閉症〞者想得那麼美好。 因為,自閉症者的訓練,是完全沒有假期的! 那麼,如何在颱風假,能讓自閉症者不知情狀況下,能讓自閉症者〝不知不覺〞進行訓練? 以〝玩中學〞為主,讓自閉症者玩出
對女自閉症者而言,一到生理期,就是令家人頭痛不已。 因此,這需要進行協助。 先以圖卡進行協助自閉症者理解生理期的禁忌 不單單是做連環漫畫,也要簡短具體說明,生理期的禁忌原因和形成的後果。 因此,在自閉症者的理解,必然有經過平時的重覆,才有的成果。 以代幣制度,進行協助自閉症者有動機 在自
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
以視覺化行程表的方式,是主要的關鍵。 而在其他的方式,是以自閉症者的大量訊息輸入。 提前進行休息時間之後的行程項目 在自閉症者的休息時間,有可能因為過長的沒事做,就要調整。 因此,不是額外增加,就是要提前做。 帶能吸引自閉症者的物品 這方式的前提,是先理解該自閉症者的愛好。 如此一來,就能在應用行為
其實,我有過這經驗。 那是民國110年的事了,因為當時對新冠病毒理解不深,慈惠日間突然的大停課,我就想說,那到時候,訓練地點在家裡,那麼,不就會亂掉? 雖說在那裡訓練都一樣,只是,空間問題。 我所想到的同一問題,就是我怕農曆春假的原因。 因為,沒有到院訓練期間,生活規律亂掉、惡化的情況也有。
Thumbnail
 近期有計畫到杭州旅遊的台灣朋友們,跟大家分享一個好消息! 【杭州蕭山機場】已經有開放【台胞證】入境自助通關囉! 以後不用再到人工邊檢排隊排到落落長,排到快抓狂了… 雖然之前就有聽說過北京、上海、廈門、深圳、珠海等沿海大城市都已經開放,直到幾天前剛從台灣飛到杭州才知道…
Thumbnail
<p>因為女性生理構造,養育和照顧等勞動常被視為典型的女性職務。但是,這些基於女性特質對社會做出的貢獻,不管是在地位和酬勞上,往往比男性特質的社會貢獻低。因此許多文化女性主義者認為,女性特質的社會貢獻必須得到相當的尊重和報酬。</p>
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
在自閉症者的感官過度敏銳,常見的是聽覺。 因此,今天就來談談,從〝適應〞的角度,去進行自閉症者的聽覺減敏訓練。 先找出自閉症者的感到不舒服聲音類型 以其家人來說,要先觀察自閉症者感到不舒服的聲音類型,進行做足準備。 像最近,我在慈惠日間,問高姓自閉症者的感到不舒服聲音類型,結果,是恐怖類型。
相信看到今天新聞就知道,有時就算有注意路況,問題是,人算不如天算。 颱風天在外的自閉症者遇到因為強颱的肆虐,導致需要換別條路。 而就算有在適應的自閉症者,如何陪伴? 用事先找自閉症者喜愛的事物,在自閉症者的情緒到頂端之前,引開令自閉症者焦慮不安的當下 這不是要求自閉症者迴避,而是先安撫自閉症
相信颱風假對自閉症者而言,是感到開心的事。 因為,可以用不著去機構做累死人的〝活動〞了! 其實,事實完全沒有自閉症〞者想得那麼美好。 因為,自閉症者的訓練,是完全沒有假期的! 那麼,如何在颱風假,能讓自閉症者不知情狀況下,能讓自閉症者〝不知不覺〞進行訓練? 以〝玩中學〞為主,讓自閉症者玩出
對女自閉症者而言,一到生理期,就是令家人頭痛不已。 因此,這需要進行協助。 先以圖卡進行協助自閉症者理解生理期的禁忌 不單單是做連環漫畫,也要簡短具體說明,生理期的禁忌原因和形成的後果。 因此,在自閉症者的理解,必然有經過平時的重覆,才有的成果。 以代幣制度,進行協助自閉症者有動機 在自
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
以視覺化行程表的方式,是主要的關鍵。 而在其他的方式,是以自閉症者的大量訊息輸入。 提前進行休息時間之後的行程項目 在自閉症者的休息時間,有可能因為過長的沒事做,就要調整。 因此,不是額外增加,就是要提前做。 帶能吸引自閉症者的物品 這方式的前提,是先理解該自閉症者的愛好。 如此一來,就能在應用行為
其實,我有過這經驗。 那是民國110年的事了,因為當時對新冠病毒理解不深,慈惠日間突然的大停課,我就想說,那到時候,訓練地點在家裡,那麼,不就會亂掉? 雖說在那裡訓練都一樣,只是,空間問題。 我所想到的同一問題,就是我怕農曆春假的原因。 因為,沒有到院訓練期間,生活規律亂掉、惡化的情況也有。
Thumbnail
 近期有計畫到杭州旅遊的台灣朋友們,跟大家分享一個好消息! 【杭州蕭山機場】已經有開放【台胞證】入境自助通關囉! 以後不用再到人工邊檢排隊排到落落長,排到快抓狂了… 雖然之前就有聽說過北京、上海、廈門、深圳、珠海等沿海大城市都已經開放,直到幾天前剛從台灣飛到杭州才知道…
Thumbnail
<p>因為女性生理構造,養育和照顧等勞動常被視為典型的女性職務。但是,這些基於女性特質對社會做出的貢獻,不管是在地位和酬勞上,往往比男性特質的社會貢獻低。因此許多文化女性主義者認為,女性特質的社會貢獻必須得到相當的尊重和報酬。</p>