Mysql

導入自簽名證書 mysql/mariadb 和 tomcat 如何?

  • April 27, 2016

嘗試使用證書來保護 Tomcat 8.x 和 mysql/mariadb 之間的連接。我將使用自簽名證書。接下來是我認為我應該去的,感謝你加入並糾正我。

創建後端(數據庫)證書

  1. sudo openssl genrsa 4096 > ca-key.pem
  2. sudo openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
  3. sudo openssl req -newkey rsa:4096 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
  4. sudo openssl rsa -in server-key.pem -out server-key.pem
  5. sudo openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

更新 mysql cnf

  • ca-key.pem
  • 伺服器-key.pem
  • 伺服器-cert.pem

好的,這就是我不知道如何進行的地方。我想我必須使用 JAVA keytool 。

我從這裡去哪裡?

到 OSP

您描述的步驟對我來說看起來不錯。不過,您不需要對 openssl 命令使用 sudo。

之後,您必須將 CA 證書導入 java 信任庫。它被稱為“cacerts”並駐留在<path_to_jre>/security/目錄中。只需使用以下命令導入證書:

keytool -import -trustcacerts -keystore /path/to/jre/security/cacerts \
   -file /path/to/ca-cert.pem -alias "some meaningful name"

密鑰庫文件的預設密碼是“changeit”。

如果已導入,則應將useSSL=true開關添加到 JDBC URL,如下所示:

jdbc:mysql://server/database?useUnicode=true&useSSL=true

需要考慮的一些事項:

  • 您不必使用系統範圍的密鑰庫,但如果您不這樣做,則必須在連接前-Djavax.net.ssl.trustStore=/keystore/path通過開關或通過呼叫提供密鑰庫位置System.setProperty("javax.net.ssl.trustStore", "/keystore/path")
  • 輸入文件必須是 PEM 格式(即,-----BEGIN CERTIFICATE----------END CERTIFICATE-----行之間的 base64 編碼的東西)。
  • keytool命令不搜尋證書:它應該是輸入文件中的第一個條目。

引用自:https://serverfault.com/questions/773188