SSLを使用してリモートで接続できるように、SQL Server 2014を構成しようとしています。有効なワイルドカード証明書がサーバーにインストールされ、証明書のドメイン名(example.com)がサーバーのFQDN(test.windows-server-test.example.com)と一致します。
問題は、SQL Server構成マネージャーでは、証明書がリストされていないため、選択できないことです。
つまり、 このMSチュートリアル のステップ2.e.2に固執しています。
コメントで通信した後、あなたの主な問題は、使用する証明書の[〜#〜] cn [〜#〜]部分であると推測できます。 IISサーバーのTLS通信を成功させるには、SQL Serverのような強力な制限はありません。
Microsoftは、証明書の名前がコンピューターの完全修飾ドメイン名(FQDN)でなければならないことを here を参照してください。Subject証明書の一部はCN = test.widows-server-test.example.comのようになります。ここでtest.widows-server- test.example.comは、コンピューターのFQDNです。例えばCN = * .example.comおよびSubject Alternative Nameを使用するだけでは不十分です。これにはDNS Name=*.example.com
とDNS Name=test.widows-server-test.example.com
、DNS Name=test1.widows-server-test.example.com
、DNS Name=test.widows-server-test2.example.com
などが含まれます。 。このような証明書はTLSでは問題ありませんが、SQL Serverはそれを破棄します。 記事 を参照してください。近い問題について説明しています。
SQL ServerのFQDNと等しいCNを使用して自己署名証明書を作成し、証明書がSQL Server構成マネージャーによって表示されることを確認することをお勧めします。
[〜#〜] updated [〜#〜]:プロセスモニターに関してもう少し問題を分析し、レジストリの2つの値がSQL Server構成マネージャーにとって重要であることがわかりました。キーの下のHostname
およびDomain
の値
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Domain
とHostname
を証明書のCNに対応する値に変更すると、証明書はSQL Server構成マネージャーに既に表示されます。すべての問題ではないかもしれませんが、SQL ServerがWebサーバー(IISなど)としてはるかに多くを必要としていたことを示しています。
UPDATED 2:問題をもう一度詳しく調べて、すでに持っている一般的なSSL証明書を構成する方法を見つけたと思います(たとえば、 暗号化 、 StartSSL またはその他)。
SQL Server Configuration Managerの動作をSQL Serverが必要とする構成と区別することが重要です。 Configuration Managerのプロパティの[証明書]タブには、SQL Serverとしてより厳しい制限があります。上記ではSQL Server構成マネージャーの制限についてのみ説明しましたが、レジストリーで直接構成して、SQL Serverでより一般的なSSL/TLS証明書を使用することができます。これを行う方法を以下に説明します。
必要なことは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib
のようなキーの下のレジストリで行うことができます。MSSQL12.SQL2014
の部分は、あなたの場合は少し異なる場合があります。 SQL Server構成マネージャーは、レジストリに2つの値を設定するのに役立ちます:ForceEncryption
およびCertificate
:
Certificate
値は、証明書のプロパティを調べることで見つけることができるSHA1ハッシュです。
または証明書の拡張プロパティ。使用法certutil.exe -store My
で表示されます。
「Cert Hash(sha1)」値をコピーし、すべてのスペースを削除して、Certificate
値の値としてレジストリに配置するだけです。設定を行い、SQL Server Windowsサービスを再起動すると、C:\Program Files\Microsoft SQL Server\...\MSSQL\Log
ディレクトリのERRORLOG
ファイルに次のような行が表示されます。
2016-04-25 21:44:25.89サーバー証明書[Cert Hash(sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA"]は暗号化のために正常にロードされました。
これを、SQL 2016 SP2とフェールオーバークラスターで発生した同様の問題でつまずくかもしれない将来の人々のために追加したいと思います。レジストリに追加された証明書のprint印は、すべて大文字でなければなりませんでした。
これが次の人に役立つことを願っています。
承認済み回答の更新2セクションの手順を実行すると、SQL Serverサービスを開始できず、イベントビューアーでこれらのエラーが発生しました。
ユーザー指定の証明書をロードできません[Cert Hash(sha1) "thumbprint of certificate"]。サーバーは接続を受け入れません。証明書が正しくインストールされていることを確認する必要があります。 Books Onlineの「SSLが使用する証明書の構成」を参照してください。
TDSSNIClientの初期化は、エラー0x80092004、ステータスコード0x80で失敗しました。理由:SSLサポートを初期化できません。オブジェクトまたはプロパティが見つかりません。
TDSSNIClientの初期化は、エラー0x80092004、ステータスコード0x1で失敗しました。理由:初期化がインフラストラクチャエラーで失敗しました。以前のエラーを確認してください。オブジェクトまたはプロパティが見つかりません。
sQL Serverエラーログにエラーがあります:
サーバーは、SSL接続を開始するために必要な証明書をロードできませんでした。次のエラーが返されました:0x8009030d。証明書をチェックして、それらが有効であることを確認します。
グーグルで見つけて 解決策 :
SQL Serverサービスを実行しているWindowsアカウント(NT Service\MSSQLServer
私の場合)は、次のフォルダー/登録エントリに対する完全な権限を持っています。
No.1 NT Service\MSSQLSERVER
はすでに許可を受けています。
2番をチェックしましたNT Service\MSSQLSERVER
には許可がなく、許可を追加しました。そのフォルダー内のファイルの1つが操作を拒否されたことを示すエラーをポップアップしましたが、私はそれを無視しました(他に何もできません)
私はNo.3をチェックせず、SQL Serverを起動しようとしましたが、うまくいきました!!
SQL Serverドメインアカウントでサーバーにログオンし(一時的にローカル管理者にアカウントを追加する必要がありました)、SQL Serverサービスアカウントの個人用フォルダーに証明書をインポートしました。サーバーを再起動すると、SQL Serverは証明書を見ることができました。それが誰かを助けることを願っています。
追加の障害モードはキーの長さです-SQLには最小2048のキー長が必要です。DHチャネルが無効の場合。