簡體   English   中英

rails mysql2:如何驗證mysql服務器的SSL證書?

[英]rails mysql2: how to verify mysql server's SSL certificate?

我試圖通過SSL遠程連接到mysql db,並驗證服務器的證書以匹配用於連接到服務器的DNS域。

使用命令行mysql工具,我可以使用mysql --ssl-ca=/path/to/cacert.pem --ssl-verify-server-cert

使用rails mysql2,我設置了sslca: ¹,這會導致未經過完全驗證的SSL連接,如mysql --ssl-ca=那樣。 我如何做--ssl-verify-server-cert的等效項,以便在服務器證書的域錯誤的情況下連接失敗?

我嘗試添加對此問題沒有影響的以下內容: flags: SSL_VERIFY_SERVER_CERTflags: CLIENT_SSL_VERIFY_SERVER_CERTflags: 1073741824secure_auth: true

¹要么是sslca: /path/to/cacert.pem ?sslca=/path/to/cacert.pem中的sslca: /path/to/cacert.pem ,要么是mysql2:// URL中的?sslca=/path/to/cacert.pem

使用mysql2>=0.4.0 ,可以在適配器配置中設置sslverify: truesslca: path/to/cert_chain.pem ,以使客戶端驗證服務器身份。

這不是Mysql2 gem中的默認連接標志之一,但是該常數可用,並且可以在建立連接之前按位或到連接標志字段中。

您可以這樣設置全局默認值:

Mysql2::Client::default_query_options[:connect_flags] |=
    Mysql2::Client::SSL_VERIFY_SERVER_CERT

或為每個連接設置標志:

client = Mysql2::Client.new(
    :connect_flags => (Mysql2::Client::default_query_options[:connect_flags]
                     | Mysql2::Client::SSL_VERIFY_SERVER_CERT)
    )

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM