如何从给定的 CA 文件(证书颁发机构)创建 SSL 密钥和 SSL 证书

如何从给定的 CA 文件(证书颁发机构)创建 SSL 密钥和 SSL 证书

我需要创建到 Azure 云 MySQL 服务器的加密数据库连接,他们为我们提供了一个名为“BaltimoreCyber​​TrustRoot.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

相关内容