在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...