MONGO GO DRIVER與SSL結合使用詳解

2021-10-23 03:01:45 字數 1546 閱讀 2388

在mongodb3開始,它會強制進行ssl的配置,否則會存在mongo shell無法連線到mongodb伺服器的情況。

我們開發人員為了在本地部署乙個開發環境,都會傾向於在本地部署mongodb的伺服器端和客戶端,這樣為了支援ssl,我們也會在本地通過openssl工具形成乙個自簽證書。由於自簽證書的存在也會給基於mongo-go-driver進行golang開發帶來一些問題

如果我們只是按照官方文件進行基本的開發,我們會發現我們在連線mongodb伺服器時,會出現如下錯誤:

server selection error: server selection timeout, current topology: , ]

}

在啟動mongodb伺服器時,需要指定–clusterauthmode x509引數,如下所示:

mongod --config /usr/local/etc/mongod.conf --sslweakcertificatevalidation --clusterauthmode x509
cafilepath :=

"/users/***/keys/ca.pem"

certificatekeyfilepath :=

"/users/***/keys/client.pem"

uri :=

"mongodb://localhost:27017/?tlscafile=%s&tlscertificatekeyfile=%s&sslallowinvalidcertificates=true&sslallowinvalidhostnames=true&ssl=true"

uri = fmt.

sprintf

(uri, cafilepath, certificatekeyfilepath)

credential := options.credential

clientopts := options.

client()

.(uri)

.setauth

(credential)

client, err := mongo.

connect

(context.

todo()

, clientopts)

if err !=

nil client.

ping

(context.

todo()

,nil

) log.

println

("connect successfully."

)

這樣,當我們執行如上**時,會顯示如下資訊,代表我們成功的連線 到了mongodb伺服器上:

引數說明

cafilepath:根證書

certificatekeyfilepath:客戶端認證證書

彙編檔案字尾 s 與 S

一 大小寫字尾的區別 s 組合語言源程式 彙編 s 組合語言源程式 預處理,彙編 小寫的s檔案,在後期階段不在進行預處理操作,所以我們不能在這裡面寫預處理的語句在裡面 大寫的s檔案,還會進行預處理 彙編等操作,所以我們可以在這裡面加入預處理的命令 二 編譯的相關流程 預處理 pre processi...

摘錄 彙編檔案字尾 s 與 S

一 大小寫字尾的區別 s 組合語言源程式 彙編 s 組合語言源程式 預處理,彙編 小寫的s檔案,在後期階段不在進行預處理操作,所以我們不能在這裡面寫預處理的語句在裡面 大寫的s檔案,還會進行預處理 彙編等操作,所以我們可以在這裡面加入預處理的命令 二 編譯的相關流程 預處理 pre processi...

S7 1200與S7 1200之間的S7乙太網通訊

第一步,1214dc dc dc一台,1214dc dc dc一台,交換機一台 第二步,開啟博圖軟體,新建專案,新增 本地plc s7 1214dc dc dc 開啟plc1屬性,新增新子網,設定ip為10.10.56.20 在保護 連線機制中勾選允許遠端夥伴訪問。第三步,新增夥伴plc s7 12...