我需要创建到 Azure 云 MySQL 服务器的加密数据库连接,他们为我们提供了一个名为“BaltimoreCyberTrustRoot.crt.pem”的 CA 证书,供连接 Azure MySQL 服务器时使用。
我的问题是,当我连接到 MySQL 服务器时,我需要提供密钥和证书文件的路径,如下所示,我该如何生成自己的文件或是否也需要上述两个文件?将它们留空是否意味着连接不安全或不太安全?
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'options' => array(
PDO::MYSQL_ATTR_SSL_KEY => env('CLIENT_KEY', ''),
PDO::MYSQL_ATTR_SSL_CERT => env('CLIENT_CERT', ''),
PDO::MYSQL_ATTR_SSL_CA => env('CA_CERT', ''),
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
),
],
答案1
KEY 和 CERT 仅用于相互认证,即通过客户端证书进行认证。不过这种认证似乎不是这里的要求,所以根本不会使用 KEY 和 CERT。
他们给你的是颁发服务器证书的 CA,即 CA_CERT。
答案2
假设您正在处理客户端证书。
您可以将 pem 转换为单独的部分/文件 这可能是一个解决方案
我能够使用以下命令将 pem 转换为 crt:
openssl x509 -outform der -in C:\path\to\your-cert.pem -out C:\path\to\your-cert.crt
关键是:
openssl pkey -in foo.pem -out foo.key