Сертификат OPenSSL для SQL Server - PullRequest
4 голосов
/ 14 июня 2011

Я создал сертификат SSL с использованием OpenSSL для моего Microsoft WebServer 2003, IIS 6.0. Я могу установить и использовать его как на стороне клиента, так и на стороне сервера. Теперь я хочу использовать его для моего SQL Server Express 2008 R2, но он не отображается в списке сертификатов диспетчера конфигурации SQL Server. Я попробовал много таких подсказок в интернете, но ни один из них не сработал. Я также нашел список предпосылок на сервере MS, но я не уверен, как это понять:

  1. Сертификат должен находиться в локальном компьютере или в хранилище сертификатов текущего пользователя.

  2. Сертификат должен иметь правильную временную метку, т. Е. Текущее системное время должно быть в действительном временном окне сертификата.

  3. Сертификат должен быть предназначен для Аутентификации сервера, т. Е. Для Аутентификации сервера должно быть включено свойство расширенного использования ключа сертификата (1.3.6.1.5.5.7.3.1).

  4. Спецификация ключа сертификата должна включать свойство AT_KEYEXCHANGE. Обычно использование сертификата должно включать в себя шифрование ключей.

  5. CN субъекта сертификата должен соответствовать полному доменному имени серверного компьютера или полному доменному имени виртуального сервера, если сервер работает в отказоустойчивом кластере. Это означает, что необходимые сертификаты должны быть предоставлены на всех узлах в отказоустойчивом кластере.

Пункты 1, 2 и 3 установлены. Пункт 4 по умолчанию, насколько мне удалось читать. Пункт 5 также верен: CN соответствует FQDN.

Кто-нибудь может мне помочь?

Следующие шаги выполняются мной для создания сертификата:

set home=c:\openSSL\bin 
set randfile=File.rnd 
openssl genrsa -des3 -out firma-private.key 2048 
openssl req -new -config 2.config -key firma-private.key -x509 -days 3065 -out firma-ca.cer 
openssl x509 -req -days 3065 -in certreq.txt -CA firma-ca.cer -CAkey firma-private.key -CAcreateserial -out extern-server.cer 

Содержимое 2.config:

[ req ] 
default_bits       = 2048 
distinguished_name = req_DN 
string_mask        = nombstr 

[ req_DN ] 
countryName                     = DE 
countryName_default             = DE 
countryName_min                 = 2 
countryName_max                 = 2 
stateOrProvinceName             = N........ W........ 
stateOrProvinceName_default     = N........ W........ 
localityName                    = W........ 
localityName_default            = W........ 
0.organizationName              = S.....-C...... 
0.organizationName_default      = S.....-C...... 
organizationalUnitName          = Software 
organizationalUnitName_default  = Software 
commonName                      = s.....-c.......dyndns.org 
commonName_max                  = 64 
commonName_default              = s.....-........dyndns.org 
emailAddress                    = Info@S.....-C.......de 
emailAddress_max                = 40 
emailAddress_default            = Info@S.....-C.......de 

Заранее спасибо,

Андре

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Я знаю, что это месяцы, но я наткнулся на это в поисках того же ответа.

Я нашел исправление в Эта ссылка

Похоже, проблема в том, что служба SQL, работающая как «Сетевая служба», не имела разрешения на использование ключа. Я выполнил шаги, чтобы предоставить Сетевой службе права на ключ, и все работало отлично.

1 голос
/ 08 октября 2013

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

Вот что я сделал:

# generate key    
openssl genrsa -des3 -out server.key 2048

# remove pass
openssl rsa -in server.key -out server.key

# generate sign request, be sure to include the correct FQDN
# (host name followed by primary dns suffix)
openssl req -new -key server.key -out server.csr

# generate self signed certificate
openssl x509 -req -in server.csr -signkey server.key -out server.crt

# include both the certificate and the private key in a PKCS12 keystore
# (leave the export key empty)
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt

Затем добавьте файл server.p12 в хранилище сертификатов локального компьютера (с оснасткой «Сертификаты»). Наконец, вы сможете выбрать сертификат в диспетчере конфигурации SQL.

Однако сервер не запустится, если у него нет доступа на чтение к только что импортированному секретному ключу. Для этого вы также должны предоставить учетной записи, на которой запущен сервер SQL (например, NETWORK SERVICE), соответствующие права. Просто щелкните правой кнопкой мыши сертификат, который вы только что импортировали (в оснастке «Сертификаты»), и выберите «Управление личными ключами» в разделе «Все задачи». Там вы можете добавить учетную запись службы и дать ей разрешение на чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...