Azure Portal との https 通信の暗号スイートを確認する

こんにちは駆け出しアーキテクトのやまぱんです。
今回は Azure Portal との https 通信で使われる暗号スイートを確認してみます。


### 実際にアクセスしてブラウザで確認する。
今回はEdgeの場合ですが、Chromeでも開発者ツールはあるのでほぼ同じことができるはず。
"F12"  を押して開発者ツールを開く → "＋"  を押す→ "セキュリティ"  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/3c61a46d-373d-39ff-b3d7-bb9ac6408a9b.png)

すると下記のような画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/d5f06395-a872-3bb8-cd81-6733f6aae199.png)

URL部分をクリックすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/8892dd98-0271-7b94-be09-eea9a029d03c.png)

接続で使われている暗号スイートが確認できます。
私の環境では下記の暗号スイートで Azure Portal と通信していることが分かりました。

> プロトコル	TLS 1.2
> キー交換	ECDHE_RSA with P-384
> サーバーの署名	RSA-PSS with SHA-256
> 暗号	AES_256_GCM

:::note info
どの暗号スイートで通信されるかはOSバージョンなどクライアントの環境によって異なりますので、実際に確認してみてください。
:::

つぎに Azure Portal が対応している暗号スイートを確認してみたいと思います。

###  Azure Portal が対応している暗号スイートを確認する

方法はいくつかありますが、まずはSSL Labs を利用してみます。

#### SSL labs を使う
・SSL labs
https://www.ssllabs.com/ssltest/

ここにURLを入れてテストするだけです。結果がでてCipher Suites(暗号スイート)の箇所を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/0a25b07d-86d9-9961-06fd-c9f489f00675.png)

実際に確認してみます。
URL: [SSL Server Test: portal.azure.com (Powered by Qualys SSL Labs)](https://www.ssllabs.com/ssltest/analyze.html?d=portal.azure.com&s=2620%3a1ec%3a4e%3a1%3a0%3a0%3a0%3a69)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/0b33b597-d02d-5fb4-539f-b730eadb173f.png)



#### namp を使う 
下記のコマンドを実施します。
```
nmap --script ssl-enum-ciphers -p 443 portal.azure.com
```

+ 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/bd0cbba6-38fa-930a-d610-e6f9f84a56c9.png)


```
443/tcp open https 
| ssl-enum-ciphers: 
| TLSv1.2: 
| ciphers: 
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp384r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A 
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp384r1) - A 
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A 
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A 
| TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A 
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A 
| compressors: | NULL | cipher preference: server |_ least strength: A
```

##### nmap が入っていなければ適宜インストール
Ubuntu の時の例
下記コマンドで実施します。
```
sudo snap install nmap
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/17877ab7-014a-31b0-9917-3677dd8f7fd0.png)


### 余談： Azure Portal は Azure Front Door ？
実は、Azure Portal のIPアドレスは今現在Azure Front Door を経由してます。
(nslookup/名前解決して出てきたIPアドレスを確認するとAzure Front Door のIPアドレスレンジに含まれていることがわかります。)

特定のサービスのIPアドレスレンジの確認はこちらの [Microsoft Public IP Space の json](https://www.microsoft.com/en-us/download/confirmation.aspx?id=53602) からできます。

そのため、Azure Front Door でサポートされている暗号スイートと同じと考えることもできます。

実際に公式Docsを確認すると以下の通り、確認した結果と同じであることが分かります。
・Azure Front Door ：サポートされている暗号スイート
https://learn.microsoft.com/ja-jp/azure/frontdoor/end-to-end-tls?pivots=front-door-standard-premium#supported-cipher-suites

> TLS 1.2 では、次の暗号スイートがサポートされています。
> 
> TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256


:::note warn
あくまでも今現在の仕様であり、公式に公開されているものでもないです。
そのためこの仕様は予告なく変わる可能性があります。
なのでその都度、ご紹介した方法で実際に確認されるのがよいかと思います。
:::


### 参考
・【PKI 応用】暗号スイート (cipher suite) とは
https://pkiwithadcs.com/cipher_suite/

・Azure 公開キーの暗号化と署名アルゴリズム 
https://learn.microsoft.com/ja-jp/azure/security/fundamentals/azure-ca-details#public-key-encryption-and-signature-algorithms

・Windows OSごとの TLS/SSL の暗号スイート (Schannel SSP)
https://learn.microsoft.com/ja-jp/windows/win32/secauthn/cipher-suites-in-schannel