[英]connection requires a valid client certificate in laravel google cloud postgres with ssl mode
我在嘗試連接到 gcloud postgres db 時遇到問題,允許 laravel 應用程序中的 ssl 在雲中運行。 我從 gcloud 下載了所有三個證書文件,並在 config/database.php 中設置了路徑。
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'require',
'options' => [
'sslcert' => storage_path(path: 'client-cert.pem'),
'sslkey' => storage_path(path: 'client-key.pem'),
'sslrootcert' => storage_path(path: 'server-ca.pem'),
],
],```
after enabling the 'Allow only SSL connections' I am getting this error.
'SQLSTATE[08006] [7] FATAL: connection requires a valid client certificate (SQL: select * from "sessions" where "id" = wDJOd7Ssm6ggLngYQPprlIP0FNrtMxGTtCW4lELX limit 1)'
I can successfully connect to the same db via pgadmin and psql console with ssl certificates from my local machine(windows). But I need to do it through my application. Please help me to overcome this as it is showing as a high security risk factor in the GCP Security Command Center.
Thanks.
至少有兩個可能的問題:
第 1 項:
你有'sslmode' => 'require' 。 這意味着服務器證書已根據 CA 進行驗證。 對於 Google Cloud SQL,服務器的證書包含與主機名不匹配的 Cloud SQL 實例的名稱。
將值更改為允許。 Google Cloud SQL 將強制執行客戶端證書。 PostgresQL 客戶端不會驗證服務器的證書,如果驗證將失敗。
第 2 項:
證書無效。 在文本編輯器中打開每個文件並驗證它們是否是具有正確標題的文本文件:
client_cert.pem: -----BEGIN CERTIFICATE----- client_key.pem: -----BEGIN RSA PRIVATE KEY----- server-ca.pem: -----BEGIN CERTIFICATE--- --
您還可以使用openssl來驗證文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.