创建后端(数据库)证书

创建后端(数据库)证书

尝试使用证书来保护 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 服务器密钥.pem -out 服务器密钥.pem
  5. sudo openssl x509 -req -in 服务器-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out 服务器-cert.pem

更新 mysql cnf

  • ca密钥.pem
  • 服务器密钥.pem
  • 服务器证书.pem

好吧,现在我不知道该怎么做了。我想我必须使用 JAVA keytool 。

我接下来要去哪里?

过氧化物酶

答案1

您描述的步骤对我来说看起来不错。不过,您不需要对 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"

keystore 文件的默认密码是“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命令不会搜索证书:它应该是输入文件中的第一个条目。

相关内容