.png)
Мне нужно создать зашифрованное подключение к базе данных для серверов Azure Cloud MySQL. Они предоставили нам сертификат CA под названием «BaltimoreCyberTrustRoot.crt.pem» для использования при подключении к серверам 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