Spec-Zone .ru
спецификации, руководства, описания, API

6.3.9.5. Установка Сертификатов SSL и Ключей для MySQL

Этот раздел демонстрирует, как установить сертификат SSL и файлы ключей для использования серверами MySQL и клиентами. Первый пример показывает упрощенную процедуру, такую как, Вы могли бы использовать из командной строки. Вторые шоу сценарий, который содержит больше детали. Первые два примера предназначаются для использования на Unix, и оба используют openssl команду, которая является частью OpenSSL. Третий пример описывает, как установить файлы SSL на Windows.

Пример 1: Создание Файлов SSL из Командной строки на Unix

Следующий пример показывает ряд команд, чтобы создать сервер MySQL и клиентский сертификат и файлы ключей. Вы должны будете ответить на несколько подсказок openssl командами. Чтобы генерировать тестовые файлы, можно нажать, Входят во все подсказки. Чтобы генерировать файлы для производственного использования, следует обеспечить непустые ответы.

# Create clean environmentshell> rm -rf
        newcertsshell> mkdir newcerts && cd
        newcerts# Create CA certificateshell> openssl genrsa 2048
        > ca-key.pemshell> openssl req -new -x509 -nodes -days
        3600 \         -key ca-key.pem -out ca-cert.pem# Create server certificate, remove passphrase, and sign it# server-cert.pem = public key, server-key.pem = private keyshell> openssl req -newkey rsa:2048 -days 3600 \         -nodes -keyout server-key.pem -out server-req.pemshell> openssl rsa -in server-key.pem -out server-key.pemshell> openssl x509 -req -in server-req.pem -days 3600 \         -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out
        server-cert.pem# Create client certificate, remove passphrase, and sign it# client-cert.pem = public key, client-key.pem = private keyshell> openssl req -newkey rsa:2048 -days 3600 \         -nodes -keyout client-key.pem -out client-req.pemshell> openssl rsa -in client-key.pem -out client-key.pemshell> openssl x509 -req -in client-req.pem -days 3600 \         -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out
        client-cert.pem

После генерирования сертификатов проверьте их:

shell> openssl verify -CAfile ca-cert.pem
        server-cert.pem client-cert.pemserver-cert.pem: OKclient-cert.pem: OK

Теперь у Вас есть ряд файлов, которые могут использоваться следующим образом:

Чтобы использовать файлы, чтобы протестировать соединения SSL, см. Раздел 6.3.9.3, "Используя Соединения SSL".

Пример 2: Создание Файлов SSL Используя Сценарий на Unix

Вот сценарий в качестве примера, который показывает, как установить сертификат SSL и файлы ключей для MySQL. После выполнения сценария используйте файлы, чтобы протестировать соединения SSL как описано в Разделе 6.3.9.3, "Используя Соединения SSL".

DIR=`pwd`/opensslPRIV=$DIR/privatemkdir $DIR $PRIV $DIR/newcertscp /usr/share/ssl/openssl.cnf $DIRreplace ./demoCA $DIR -- $DIR/openssl.cnf# Create necessary files: $database, $serial and $new_certs_dir# directory (optional)touch $DIR/index.txtecho "01" > $DIR/serial## Generation of Certificate Authority(CA)#openssl req -new -x509 -keyout $PRIV/cakey.pem -out $DIR/ca-cert.pem \    -days 3600 -config $DIR/openssl.cnf# Sample output:# Using configuration from /home/monty/openssl/openssl.cnf# Generating a 1024 bit RSA private key# ................++++++# .........++++++# writing new private key to '/home/monty/openssl/private/cakey.pem'# Enter PEM pass phrase:# Verifying password - Enter PEM pass phrase:# -----# You are about to be asked to enter information that will be# incorporated into your certificate request.# What you are about to enter is what is called a Distinguished Name# or a DN.# There are quite a few fields but you can leave some blank# For some fields there will be a default value,# If you enter '.', the field will be left blank.# -----# Country Name (2 letter code) [AU]:FI# State or Province Name (full name) [Some-State]:.# Locality Name (eg, city) []:# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB# Organizational Unit Name (eg, section) []:# Common Name (eg, YOUR name) []:MySQL admin# Email Address []:## Create server request and key#openssl req -new -keyout $DIR/server-key.pem -out \    $DIR/server-req.pem -days 3600 -config $DIR/openssl.cnf# Sample output:# Using configuration from /home/monty/openssl/openssl.cnf# Generating a 1024 bit RSA private key# ..++++++# ..........++++++# writing new private key to '/home/monty/openssl/server-key.pem'# Enter PEM pass phrase:# Verifying password - Enter PEM pass phrase:# -----# You are about to be asked to enter information that will be# incorporated into your certificate request.# What you are about to enter is what is called a Distinguished Name# or a DN.# There are quite a few fields but you can leave some blank# For some fields there will be a default value,# If you enter '.', the field will be left blank.# -----# Country Name (2 letter code) [AU]:FI# State or Province Name (full name) [Some-State]:.# Locality Name (eg, city) []:# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB# Organizational Unit Name (eg, section) []:# Common Name (eg, YOUR name) []:MySQL server# Email Address []:## Please enter the following 'extra' attributes# to be sent with your certificate request# A challenge password []:# An optional company name []:## Remove the passphrase from the key#openssl rsa -in $DIR/server-key.pem -out $DIR/server-key.pem## Sign server cert#openssl ca -cert $DIR/ca-cert.pem -policy policy_anything \    -out $DIR/server-cert.pem -config $DIR/openssl.cnf \    -infiles $DIR/server-req.pem# Sample output:# Using configuration from /home/monty/openssl/openssl.cnf# Enter PEM pass phrase:# Check that the request matches the signature# Signature ok# The Subjects Distinguished Name is as follows# countryName           :PRINTABLE:'FI'# organizationName      :PRINTABLE:'MySQL AB'# commonName            :PRINTABLE:'MySQL admin'# Certificate is to be certified until Sep 13 14:22:46 2003 GMT# (365 days)# Sign the certificate? [y/n]:y### 1 out of 1 certificate requests certified, commit? [y/n]y# Write out database with 1 new entries# Data Base Updated## Create client request and key#openssl req -new -keyout $DIR/client-key.pem -out \    $DIR/client-req.pem -days 3600 -config $DIR/openssl.cnf# Sample output:# Using configuration from /home/monty/openssl/openssl.cnf# Generating a 1024 bit RSA private key# .....................................++++++# .............................................++++++# writing new private key to '/home/monty/openssl/client-key.pem'# Enter PEM pass phrase:# Verifying password - Enter PEM pass phrase:# -----# You are about to be asked to enter information that will be# incorporated into your certificate request.# What you are about to enter is what is called a Distinguished Name# or a DN.# There are quite a few fields but you can leave some blank# For some fields there will be a default value,# If you enter '.', the field will be left blank.# -----# Country Name (2 letter code) [AU]:FI# State or Province Name (full name) [Some-State]:.# Locality Name (eg, city) []:# Organization Name (eg, company) [Internet Widgits Pty Ltd]:MySQL AB# Organizational Unit Name (eg, section) []:# Common Name (eg, YOUR name) []:MySQL user# Email Address []:## Please enter the following 'extra' attributes# to be sent with your certificate request# A challenge password []:# An optional company name []:## Remove the passphrase from the key#openssl rsa -in $DIR/client-key.pem -out $DIR/client-key.pem## Sign client cert#openssl ca -cert $DIR/ca-cert.pem -policy policy_anything \    -out $DIR/client-cert.pem -config $DIR/openssl.cnf \    -infiles $DIR/client-req.pem# Sample output:# Using configuration from /home/monty/openssl/openssl.cnf# Enter PEM pass phrase:# Check that the request matches the signature# Signature ok# The Subjects Distinguished Name is as follows# countryName           :PRINTABLE:'FI'# organizationName      :PRINTABLE:'MySQL AB'# commonName            :PRINTABLE:'MySQL user'# Certificate is to be certified until Sep 13 16:45:17 2003 GMT# (365 days)# Sign the certificate? [y/n]:y### 1 out of 1 certificate requests certified, commit? [y/n]y# Write out database with 1 new entries# Data Base Updated## Create a my.cnf file that you can use to test the certificates#cat <<EOF > $DIR/my.cnf[client]ssl-ca=$DIR/ca-cert.pemssl-cert=$DIR/client-cert.pemssl-key=$DIR/client-key.pem[mysqld]ssl-ca=$DIR/ca-cert.pemssl-cert=$DIR/server-cert.pemssl-key=$DIR/server-key.pemEOF

Пример 3: Создание Файлов SSL на Windows

Загрузите OpenSSL для Windows, если это не устанавливается на Вашей системе. Краткий обзор доступных пакетов может быть замечен здесь:

http://www.slproweb.com/products/Win32OpenSSL.html

Выберите Win32 Свет OpenSSL или пакет Света OpenSSL Win64, в зависимости от Вашей архитектуры (32-разрядный или 64-разрядный). Расположение установки значения по умолчанию будет C:\OpenSSL-Win32 или C:\OpenSSL-Win64, В зависимости от которого пакета Вы загружали. Следующие инструкции принимают расположение значения по умолчанию C:\OpenSSL-Win32. Измените это по мере необходимости, если Вы используете 64-разрядный пакет.

Если сообщение происходит во время указания установки '...critical component is missing: Microsoft Visual C++ 2008 Redistributables', отмените установку и загрузите один из следующих пакетов также, снова в зависимости от Вашей архитектуры (32-разрядный или 64-разрядный):

После установки дополнительного пакета перезапустите процедуру установки OpenSSL.

Во время установки, отпуск значение по умолчанию C:\OpenSSL-Win32 как путь установки, и также оставляют опцию по умолчанию 'Copy OpenSSL DLL files to the Windows system directory' выбранный.

Когда установка закончилась, добавить C:\OpenSSL-Win32\bin к переменной Windows System Path Вашего сервера:

  1. На рабочем столе Windows, щелчок правой кнопкой значок My Computer, и избранные Свойства.

  2. Выберите Вкладку "Дополнительно" из меню System Properties, которое появляется, и нажмите кнопку Environment Variables.

  3. Под Системными Переменными выберите Путь, затем нажмите кнопку Edit. Системный диалог Переменной Редактирования должен появиться.

  4. Добавить ';C:\OpenSSL-Win32\bin' до конца (замечают точку с запятой).

  5. Нажмите OK 3 раза.

  6. Проверьте, что OpenSSL был правильно интегрирован в переменную Пути, открывая новую консоль команды (Start>Run>cmd.exe) и проверяя, что OpenSSL доступен:

    Microsoft Windows [Version ...]Copyright (c) 2006 Microsoft Corporation. All rights reserved.C:\Windows\system32>cd \C:\>opensslOpenSSL> exit <<< If you see the OpenSSL prompt, installation was successful.C:\>

В зависимости от Вашей версии Windows предыдущие устанавливающие путь инструкции могли бы отличаться немного.

После того, как OpenSSL был установлен, используйте инструкции, подобные тем от от Примера 1 (показанный ранее в этом разделе) со следующими изменениями:

После генерирования сертификата и файлов ключей, чтобы использовать их, чтобы протестировать соединения SSL, см. Раздел 6.3.9.3, "Используя Соединения SSL".