如何在go中驗證SSL憑證

更新於 2023/08/08閱讀時間約 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

avatar-img
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
在自閉症者的感官過度敏銳,常見的是聽覺。 因此,今天就來談談,從〝適應〞的角度,去進行自閉症者的聽覺減敏訓練。 先找出自閉症者的感到不舒服聲音類型 以其家人來說,要先觀察自閉症者感到不舒服的聲音類型,進行做足準備。 像最近,我在慈惠日間,問高姓自閉症者的感到不舒服聲音類型,結果,是恐怖類型。
相信看到今天新聞就知道,有時就算有注意路況,問題是,人算不如天算。 颱風天在外的自閉症者遇到因為強颱的肆虐,導致需要換別條路。 而就算有在適應的自閉症者,如何陪伴? 用事先找自閉症者喜愛的事物,在自閉症者的情緒到頂端之前,引開令自閉症者焦慮不安的當下 這不是要求自閉症者迴避,而是先安撫自閉症
相信颱風假對自閉症者而言,是感到開心的事。 因為,可以用不著去機構做累死人的〝活動〞了! 其實,事實完全沒有自閉症〞者想得那麼美好。 因為,自閉症者的訓練,是完全沒有假期的! 那麼,如何在颱風假,能讓自閉症者不知情狀況下,能讓自閉症者〝不知不覺〞進行訓練? 以〝玩中學〞為主,讓自閉症者玩出
對女自閉症者而言,一到生理期,就是令家人頭痛不已。 因此,這需要進行協助。 先以圖卡進行協助自閉症者理解生理期的禁忌 不單單是做連環漫畫,也要簡短具體說明,生理期的禁忌原因和形成的後果。 因此,在自閉症者的理解,必然有經過平時的重覆,才有的成果。 以代幣制度,進行協助自閉症者有動機 在自
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
以視覺化行程表的方式,是主要的關鍵。 而在其他的方式,是以自閉症者的大量訊息輸入。 提前進行休息時間之後的行程項目 在自閉症者的休息時間,有可能因為過長的沒事做,就要調整。 因此,不是額外增加,就是要提前做。 帶能吸引自閉症者的物品 這方式的前提,是先理解該自閉症者的愛好。 如此一來,就能在應用行為
其實,我有過這經驗。 那是民國110年的事了,因為當時對新冠病毒理解不深,慈惠日間突然的大停課,我就想說,那到時候,訓練地點在家裡,那麼,不就會亂掉? 雖說在那裡訓練都一樣,只是,空間問題。 我所想到的同一問題,就是我怕農曆春假的原因。 因為,沒有到院訓練期間,生活規律亂掉、惡化的情況也有。
Thumbnail
 近期有計畫到杭州旅遊的台灣朋友們,跟大家分享一個好消息! 【杭州蕭山機場】已經有開放【台胞證】入境自助通關囉! 以後不用再到人工邊檢排隊排到落落長,排到快抓狂了… 雖然之前就有聽說過北京、上海、廈門、深圳、珠海等沿海大城市都已經開放,直到幾天前剛從台灣飛到杭州才知道…
Thumbnail
<p>因為女性生理構造,養育和照顧等勞動常被視為典型的女性職務。但是,這些基於女性特質對社會做出的貢獻,不管是在地位和酬勞上,往往比男性特質的社會貢獻低。因此許多文化女性主義者認為,女性特質的社會貢獻必須得到相當的尊重和報酬。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
在自閉症者的感官過度敏銳,常見的是聽覺。 因此,今天就來談談,從〝適應〞的角度,去進行自閉症者的聽覺減敏訓練。 先找出自閉症者的感到不舒服聲音類型 以其家人來說,要先觀察自閉症者感到不舒服的聲音類型,進行做足準備。 像最近,我在慈惠日間,問高姓自閉症者的感到不舒服聲音類型,結果,是恐怖類型。
相信看到今天新聞就知道,有時就算有注意路況,問題是,人算不如天算。 颱風天在外的自閉症者遇到因為強颱的肆虐,導致需要換別條路。 而就算有在適應的自閉症者,如何陪伴? 用事先找自閉症者喜愛的事物,在自閉症者的情緒到頂端之前,引開令自閉症者焦慮不安的當下 這不是要求自閉症者迴避,而是先安撫自閉症
相信颱風假對自閉症者而言,是感到開心的事。 因為,可以用不著去機構做累死人的〝活動〞了! 其實,事實完全沒有自閉症〞者想得那麼美好。 因為,自閉症者的訓練,是完全沒有假期的! 那麼,如何在颱風假,能讓自閉症者不知情狀況下,能讓自閉症者〝不知不覺〞進行訓練? 以〝玩中學〞為主,讓自閉症者玩出
對女自閉症者而言,一到生理期,就是令家人頭痛不已。 因此,這需要進行協助。 先以圖卡進行協助自閉症者理解生理期的禁忌 不單單是做連環漫畫,也要簡短具體說明,生理期的禁忌原因和形成的後果。 因此,在自閉症者的理解,必然有經過平時的重覆,才有的成果。 以代幣制度,進行協助自閉症者有動機 在自
Thumbnail
有多種情況下我們需要從API取消請求: 如果我們正在建立一個支付系統,並且請求一直進行,但使用者希望立即取消這筆訂單。這就是為什麼開發者會建立這個功能的原因。 從電子商務購買商品。使用者意外關閉了頁面,無法立即返回上一頁。 訂閱取消。 ......等等 這將對對這個系統沒有信心的使用者產生影響。因
以視覺化行程表的方式,是主要的關鍵。 而在其他的方式,是以自閉症者的大量訊息輸入。 提前進行休息時間之後的行程項目 在自閉症者的休息時間,有可能因為過長的沒事做,就要調整。 因此,不是額外增加,就是要提前做。 帶能吸引自閉症者的物品 這方式的前提,是先理解該自閉症者的愛好。 如此一來,就能在應用行為
其實,我有過這經驗。 那是民國110年的事了,因為當時對新冠病毒理解不深,慈惠日間突然的大停課,我就想說,那到時候,訓練地點在家裡,那麼,不就會亂掉? 雖說在那裡訓練都一樣,只是,空間問題。 我所想到的同一問題,就是我怕農曆春假的原因。 因為,沒有到院訓練期間,生活規律亂掉、惡化的情況也有。
Thumbnail
 近期有計畫到杭州旅遊的台灣朋友們,跟大家分享一個好消息! 【杭州蕭山機場】已經有開放【台胞證】入境自助通關囉! 以後不用再到人工邊檢排隊排到落落長,排到快抓狂了… 雖然之前就有聽說過北京、上海、廈門、深圳、珠海等沿海大城市都已經開放,直到幾天前剛從台灣飛到杭州才知道…
Thumbnail
<p>因為女性生理構造,養育和照顧等勞動常被視為典型的女性職務。但是,這些基於女性特質對社會做出的貢獻,不管是在地位和酬勞上,往往比男性特質的社會貢獻低。因此許多文化女性主義者認為,女性特質的社會貢獻必須得到相當的尊重和報酬。</p>