SonarQube:如何连接到启用SSL的Google云Postgresql服务器

SonarQube:如何连接到启用SSL的Google云Postgresql服务器,postgresql,ssl,sonarqube,google-cloud-sql,Postgresql,Ssl,Sonarqube,Google Cloud Sql,我已经设置了一个SonarQube并配置了SSL证书,以使URL始终使用HTTPS。到目前为止,PostgreSQL数据库具有公共IP,下面是sonar.properties文件中更改的值: sonar.jdbc.username=weakusername sonar.jdbc.password=strong密码 sonar.web.host=127.0.0.1 sonar.jdbc.url=jdbc:postgresql://xx.xxx.xxx.xxx/sonarqube search.ja

我已经设置了一个SonarQube并配置了SSL证书,以使URL始终使用HTTPS。到目前为止,PostgreSQL数据库具有公共IP,下面是sonar.properties文件中更改的值:

sonar.jdbc.username=weakusername
sonar.jdbc.password=strong密码
sonar.web.host=127.0.0.1
sonar.jdbc.url=jdbc:postgresql://xx.xxx.xxx.xxx/sonarqube
search.javaOpts=-Xms512m-Xmx512m
#更改最大限制
sysctl-w vm.max\u map\u count=262144
我正在使用作为数据库。我想只允许SSL连接到数据库,以及如何做,生成客户端证书等

将“仅允许SSL连接”设置为true后,我知道有一种方法可以使用所述的客户端证书连接到数据库

以下是启动psql客户端的命令:

psql“sslmode=verify ca sslrootcert=server-ca.pem\
sslcert=client-cert.pem sslkey=client-key.pem\
hostaddr=[INSTANCE_IP]\
user=postgres dbname=[DB_NAME]”
但是,SonarQube无法连接到数据库(不确定如何告诉SonarQube使用客户端证书)。
要使用适当的客户端证书并使用SSL连接到数据库,需要在配置文件中进行哪些更改?

您应该将以下内容添加到URL:

jdbc:postgresql://xx.xxx.xxx.xxx/sonarqube?ssl=true&sslmode=verify-ca&sslrootcert=/path/to/server-ca.pem&sslkey=/path/to/client-key.pem&sslcert=/path/to/client-cert.pem

请参阅和的文档。

您应该在URL中添加以下内容:

jdbc:postgresql://xx.xxx.xxx.xxx/sonarqube?ssl=true&sslmode=verify-ca&sslrootcert=/path/to/server-ca.pem&sslkey=/path/to/client-key.pem&sslcert=/path/to/client-cert.pem

请参阅和的文档。

将客户机密钥格式从PEM转换为PK8:

openssl pkcs8 -topk8 -inform PEM -outform DER -in client-key.pem -out client-key.pk8 -nocrypt

确保使用新的路径/文件名更新
sonar.jdbc.url
中的
sslkey
查询参数的值。

将客户机密钥格式从PEM转换为PK8:

openssl pkcs8 -topk8 -inform PEM -outform DER -in client-key.pem -out client-key.pk8 -nocrypt

确保使用新的路径/文件名更新
sonar.jdbc.url
中的
sslkey
查询参数的值。

我已使用所述的
gcloud命令创建了所有证书和密钥。我可以使用上面描述的psql命令进行连接,但是使用sonarqube我得到了这个错误
,原因是:org.postgresql.util.PSQLException:无法读取
sonarqube/logs/web.log中的SSL密钥文件/correct/path/client key.pem
。知道为什么会发生这种情况吗?看起来像是文件(或目录)权限问题。我已经使用所描述的
gcloud命令创建了所有证书和密钥。我可以使用上面描述的psql命令进行连接,但是使用sonarqube我得到了这个错误
,原因是:org.postgresql.util.PSQLException:无法读取
sonarqube/logs/web.log中的SSL密钥文件/correct/path/client key.pem
。知道为什么会发生这种情况吗?看起来像是文件(或目录)权限问题。