SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Database に CNAME でアクセスした場合の暗号化接続について

leave a comment

プレビューポータルからは SQL Database のサーバー名を設定できるようになったので、CNAME でアクセスしたいということは少ないかもしれませんが。

元ネタは こちら
A Custom DNS Name for my SQL Azure Database Server

SQL Database には「~.database.windows.net」でアクセスをしますが、以下のような CNAME を設定してアクセスすることも可能です。
image

今回は自前のドメインのサブドメインとして、SQL Database の DNS 名を登録しています。

この場合、ログイン名の後ろに「@サーバー名」を指定して、アクセスをする必要があります。
# TDS ゲートウェイがルーティングを行うために、どのサーバーに接続すればよいかを判断する必要があるためかと。
image

 

この状態で、「暗号化接続」(Encrypt=True)で接続をするとどうなるでしょう。

image

接続をしようとすると以下のようなエラーで接続が拒否されます。

image

サーバーとの接続を正常に確立しましたが、ログイン中にエラーが発生しました。 (provider: SSL Provider, error: 0 – 対象のプリンシパル名が間違っています。) (Microsoft SQL Server、エラー: -2146893022)

ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2146893022&LinkId=20476 をクリック

 

サーバー側で暗号化接続で使用する証明書が「database.windows.net」で設定されているので、CNAME で独自のドメイン名を使用してしまうと、プリンシパル名が異なるということでエラーとなってしまいます。

独自のドメイン名で暗号化接続をする場合、「trustServerCertificate」を使用して、証明書の検証をスキップする必要があります。
SSL 暗号化を使用した接続
SSL のサポートについて
接続プロパティの設定

SSMS の場合は以下のように「追加の接続パラメーター」で有効化することで、プロパティを有効にできます。
image

これで暗号化接続が有効な状態で接続が可能となります。

sqlcmd で接続する場合には、「-N」(暗号化接続)と「-C」(サーバー証明書を信頼) を使用することで、CNAME を使って暗号化接続をすることができます。

image

これらは自己署名証明書を使用してオンプレミスの SQL Server の接続を暗号化した場合に、接続元のルート証明書として、暗号化接続で使用する証明書の証明機関が登録されていない場合も使用する方法になります。

Written by masayuki.ozawa

3月 20th, 2015 at 11:52 pm

Posted in SQL Database

Tagged with

Leave a Reply

*