[アップデート] Amazon CloudFront でTLS 1.3のみ対応した TLS セキュリティポリシーを使用できるようになりました
ポスト量子暗号に対応したTLS 1.3のみ利用させたい
こんにちは、のんピ(@non____97)です。
皆さんはポスト量子暗号(以降PQC)に対応したTLS 1.3のみ利用させたいなと思ったことはありますか? 私はあります。
以下記事で紹介されているようにPQCのワークショップもあったりします。
PQCの対応として、ハイブリッド鍵交換という手法があります。これは複数の鍵交換アルゴリズムを使用することで一部が破られても安全性を維持しようとするアプローチです。ハイブリッド鍵交換については以下インターネットドラフトおよび、解説資料が参考になります。
これら資料の中でもX25519MLKEM768
とSecP256r1MLKEM768
といったECDHE(楕円曲線Diffie-Hellman鍵共有)とML-KEM(鍵カプセル化アルゴリズム)を組み合わせた鍵交換方式が紹介されています。
特にX25519MLKEM768
についてはCloudflareやApple、AkamaiのドキュメントでもPQCの文脈で紹介されています。
今回、アップデートによりCloudFrontでPQCに対応したTLS 1.3のセキュリティポリシーが使用できるようになりました。
実際にドキュメントを見てみると、以下のように先で紹介したインターネットドラフト内で出てきた鍵交換方式がサポートされていることが紹介されています。
For ciphers with elliptic curve key exchange algorithms, CloudFront supports the following elliptic curves:
- prime256v1
- X25519
- secp384r1
CloudFront supports the following post-quantum (PQ) key exchange algorithms:
- X25519MLKEM768
- SecP256r1MLKEM768
Supported protocols and ciphers between viewers and CloudFront - Amazon CloudFront
実際に触ってみました。
TLSv1.2_2021の場合
TLS 1.3の通信
まずはセキュリティポリシーがTLSv1.2_2021
の場合です。
クライアント端末にインストールしているcurlのバージョンやOpenSSLがサポートしているTLS 1.3の暗号化スイート、鍵交換アルゴリズム、鍵カプセル化アルゴリズムを確認します。
> curl --version
curl 8.14.1 (aarch64-apple-darwin24.4.0) libcurl/8.14.1 OpenSSL/3.5.0 (SecureTransport) zlib/1.2.12 brotli/1.1.0 zstd/1.5.7 AppleIDN libssh2/1.11.1 nghttp2/1.65.0 librtmp/2.3
Release-Date: 2025-06-04
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
> openssl ciphers -v | grep 1.3
TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
> openssl list -key-exchange-algorithms
{ 1.2.840.113549.1.3.1, DH, dhKeyAgreement } @ default
{ 1.3.101.110, X25519 } @ default
{ 1.3.101.111, X448 } @ default
ECDH @ default
TLS1-PRF @ default
HKDF @ default
{ 1.3.6.1.4.1.11591.4.11, id-scrypt, SCRYPT } @ default
> openssl list -kem-algorithms
SecP384r1MLKEM1024 @ default
{ 1.2.840.10045.2.1, EC, id-ecPublicKey } @ default
{ 1.3.101.110, X25519 } @ default
{ 1.3.101.111, X448 } @ default
{ 2.16.840.1.101.3.4.4.1, id-alg-ml-kem-512, ML-KEM-512, MLKEM512 } @ default
{ 2.16.840.1.101.3.4.4.2, id-alg-ml-kem-768, ML-KEM-768, MLKEM768 } @ default
{ 2.16.840.1.101.3.4.4.3, id-alg-ml-kem-1024, ML-KEM-1024, MLKEM1024 } @ default
X25519MLKEM768 @ default
X448MLKEM1024 @ default
SecP256r1MLKEM768 @ default
{ 1.2.840.113549.1.1.1, 2.5.8.1.1, RSA, rsaEncryption } @ default
X25519MLKEM768
もSecP256r1MLKEM768
もありますね。
CloudFrontで配信しているWebサイトにアクセスします。
> curl https://www.non-97.net/index.html -v
* Host www.non-97.net:443 was resolved.
* IPv6: (none)
* IPv4: 3.173.254.40, 3.173.254.48, 3.173.254.83, 3.173.254.16
* Trying 3.173.254.40:443...
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / RSASSA-PSS
* ALPN: server accepted h2
* Server certificate:
* subject: CN=www.non-97.net
* start date: Feb 24 00:00:00 2025 GMT
* expire date: Mar 25 23:59:59 2026 GMT
* subjectAltName: host "www.non-97.net" matched cert's "www.non-97.net"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M03
* SSL certificate verify ok.
* Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 2: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to www.non-97.net (3.173.254.40) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://www.non-97.net/index.html
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: www.non-97.net]
* [HTTP/2] [1] [:path: /index.html]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
> GET /index.html HTTP/2
> Host: www.non-97.net
> User-Agent: curl/8.14.1
> Accept: */*
>
* Request completely sent off
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200
< content-type: text/html
< content-length: 12
< date: Sun, 07 Sep 2025 12:37:41 GMT
< last-modified: Tue, 25 Feb 2025 02:38:39 GMT
< etag: "56aec8b7843df637b3fb2ec0b027e5b6"
< x-amz-server-side-encryption: AES256
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 a87e73bb95090524699e8b095a4d67e4.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT12-P9
< alt-svc: h3=":443"; ma=86400
< x-amz-cf-id: ppVZdJdyQoTyRgFHTpH2D3yZmNHrr8ArT55GyO4IjIfcJpQco5VmtQ==
< age: 1245
< x-xss-protection: 1; mode=block
< x-frame-options: SAMEORIGIN
< referrer-policy: strict-origin-when-cross-origin
< x-content-type-options: nosniff
< strict-transport-security: max-age=31536000
<
/index.html
* Connection #0 to host www.non-97.net left intact
TLS 1.3で通信をしていますね。
セキュリティポリシーがTLSv1.2_2021
の場合であってもX25519MLKEM768
で鍵交換していることが分かります。どうやら新しく追加されたセキュリティポリシーを使用しなくともPQCの鍵交換アルゴリズムは使用してくれるようです。
裏側でパケットキャプチャをしていたので、Client Helloを覗いてみます。
Extension: supported_groups (len=18)
Type: supported_groups (10)
Length: 18
Supported Groups List Length: 16
Supported Groups (8 groups)
Supported Group: X25519MLKEM768 (0x11ec)
Supported Group: x25519 (0x001d)
Supported Group: secp256r1 (0x0017)
Supported Group: x448 (0x001e)
Supported Group: secp384r1 (0x0018)
Supported Group: secp521r1 (0x0019)
Supported Group: ffdhe2048 (0x0100)
Supported Group: ffdhe3072 (0x0101)
確かにX25519MLKEM768
がありますね。
なお、TLS 1.3なのでServer Hello以降から暗号化がされていました。
TLS 1.2の通信
続いて、TLS 1.2で通信をしてみます。
> curl https://www.non-97.net/index.html --tls-max 1.2 -v
* Host www.non-97.net:443 was resolved.
* IPv6: (none)
* IPv4: 3.173.254.40, 3.173.254.16, 3.173.254.83, 3.173.254.48
* Trying 3.173.254.40:443...
* ALPN: curl offers h2,http/1.1
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 / x25519 / RSASSA-PSS
* ALPN: server accepted h2
* Server certificate:
* subject: CN=www.non-97.net
* start date: Feb 24 00:00:00 2025 GMT
* expire date: Mar 25 23:59:59 2026 GMT
* subjectAltName: host "www.non-97.net" matched cert's "www.non-97.net"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M03
* SSL certificate verify ok.
* Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 2: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to www.non-97.net (3.173.254.40) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://www.non-97.net/index.html
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: www.non-97.net]
* [HTTP/2] [1] [:path: /index.html]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
> GET /index.html HTTP/2
> Host: www.non-97.net
> User-Agent: curl/8.14.1
> Accept: */*
>
* Request completely sent off
< HTTP/2 200
< content-type: text/html
< content-length: 12
< date: Sun, 07 Sep 2025 12:37:41 GMT
< last-modified: Tue, 25 Feb 2025 02:38:39 GMT
< etag: "56aec8b7843df637b3fb2ec0b027e5b6"
< x-amz-server-side-encryption: AES256
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 40b8e5bc6efb70dc56083117d42460b0.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT12-P9
< alt-svc: h3=":443"; ma=86400
< x-amz-cf-id: Vu0GDhl16d9WDV4usDGiN3r0xnBcV2xY0rFv35fh2mXmGDAaHnYaCQ==
< age: 1630
< x-xss-protection: 1; mode=block
< x-frame-options: SAMEORIGIN
< referrer-policy: strict-origin-when-cross-origin
< x-content-type-options: nosniff
< strict-transport-security: max-age=31536000
<
/index.html
* Connection #0 to host www.non-97.net left intact
TLS 1.2で通信をする際にはx25519
を使用していることが分かります。
TLSv1.3_2025の場合
TLSv1.3_2025へ変更
それではセキュリティポリシーを変更しましょう。
新しく追加されたTLSv1.3_2025
を選択して更新します。
更新されたことを確認します。
ちなみに、こちらのセキュリティポリシーでサポートしているTLSバージョンはTLS 1.3のみで、以下の暗号化スイートをサポートしています。
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
抜粋 : Supported protocols and ciphers between viewers and CloudFront - Amazon CloudFront
TLS 1.3からは暗号化スイートに鍵交換と署名は省略されたのでスッキリしていますね。
TLS 1.3の通信
それでは、再度通信します。
> curl https://www.non-97.net/index.html -v
* Host www.non-97.net:443 was resolved.
* IPv6: (none)
* IPv4: 3.173.254.16, 3.173.254.83, 3.173.254.48, 3.173.254.40
* Trying 3.173.254.16:443...
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / RSASSA-PSS
* ALPN: server accepted h2
* Server certificate:
* subject: CN=www.non-97.net
* start date: Feb 24 00:00:00 2025 GMT
* expire date: Mar 25 23:59:59 2026 GMT
* subjectAltName: host "www.non-97.net" matched cert's "www.non-97.net"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M03
* SSL certificate verify ok.
* Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 2: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to www.non-97.net (3.173.254.16) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://www.non-97.net/index.html
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: www.non-97.net]
* [HTTP/2] [1] [:path: /index.html]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
> GET /index.html HTTP/2
> Host: www.non-97.net
> User-Agent: curl/8.14.1
> Accept: */*
>
* Request completely sent off
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200
< content-type: text/html
< content-length: 12
< date: Sun, 07 Sep 2025 12:37:41 GMT
< last-modified: Tue, 25 Feb 2025 02:38:39 GMT
< etag: "56aec8b7843df637b3fb2ec0b027e5b6"
< x-amz-server-side-encryption: AES256
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
< via: 1.1 fbf93e3eea1964c1f610f4f4df8d6ad0.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT12-P9
< alt-svc: h3=":443"; ma=86400
< x-amz-cf-id: Y_y9pirKX24j2LgHAKJZVTcaGKSlT8ZxYk0iIkdL_pSHw80UPENZoQ==
< age: 2061
< x-xss-protection: 1; mode=block
< x-frame-options: SAMEORIGIN
< referrer-policy: strict-origin-when-cross-origin
< x-content-type-options: nosniff
< strict-transport-security: max-age=31536000
<
/index.html
* Connection #0 to host www.non-97.net left intact
X25519MLKEM768
で鍵交換を行うTLS 1.3で通信をしていることが分かります。
TLS 1.2の通信
続いて、TLS 1.2の場合です。
> curl https://www.non-97.net/index.html --tls-max 1.2 -v
* Host www.non-97.net:443 was resolved.
* IPv6: (none)
* IPv4: 3.173.254.48, 3.173.254.83, 3.173.254.40, 3.173.254.16
* Trying 3.173.254.48:443...
* ALPN: curl offers h2,http/1.1
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS alert, protocol version (582):
* TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version
* closing connection #0
curl: (35) TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version
はい、こちらは通信できませんでした。
パケットキャプチャを確認すると、Server Helloがそもそも返ってきていないことが分かります。
PQCの鍵交換アルゴリズム以外の通信をサポートしているか
PQCの鍵交換アルゴリズム以外の通信をサポートしているか確認します。
curlでは鍵交換アルゴリズムを指定して接続を行う方法が分からなかったので、OpenSSLのs_clientを使用します。
まずは、X25519MLKEM768
の場合です。
> (main ⚡☡=) openssl s_client -connect www.non-97.net:443 -groups X25519MLKEM768 -servername www.non-97.net
Connecting to 3.173.254.83
CONNECTED(00000006)
depth=2 C=US, O=Amazon, CN=Amazon Root CA 1
verify return:1
depth=1 C=US, O=Amazon, CN=Amazon RSA 2048 M03
verify return:1
depth=0 CN=www.non-97.net
verify return:1
---
Certificate chain
0 s:CN=www.non-97.net
i:C=US, O=Amazon, CN=Amazon RSA 2048 M03
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Feb 24 00:00:00 2025 GMT; NotAfter: Mar 25 23:59:59 2026 GMT
1 s:C=US, O=Amazon, CN=Amazon RSA 2048 M03
i:C=US, O=Amazon, CN=Amazon Root CA 1
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Aug 23 22:26:04 2022 GMT; NotAfter: Aug 23 22:26:04 2030 GMT
2 s:C=US, O=Amazon, CN=Amazon Root CA 1
i:C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: May 25 12:00:00 2015 GMT; NotAfter: Dec 31 01:00:00 2037 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
.
.
(中略)
.
.
-----END CERTIFICATE-----
subject=CN=www.non-97.net
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M03
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: rsa_pss_rsae_sha256
Negotiated TLS1.3 group: X25519MLKEM768
---
SSL handshake has read 5422 bytes and written 1553 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Protocol: TLSv1.3
Server public key is 2048 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_128_GCM_SHA256
Session-ID: 844849E4B08436BAD1DE6454C846E0A79361638D24309CE48822FF632DD6FB3E
Session-ID-ctx:
Resumption PSK: <省略>
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 82536 (seconds)
TLS session ticket:
0000 - 01 31 37 35 37 32 35 33-32 37 30 30 30 30 00 00 .1757253270000..
.
.
(中略)
.
.
0080 - ed 7f 2a 7a bb d3 3d dd-e6 18 ..*z..=...
Start Time: 1757257133
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
closed
X25519MLKEM768
でTLSのハンドシェイクができていますね。
続いて、X25519
です。
> (main ⚡☡=) openssl s_client -connect www.non-97.net:443 -groups X25519 -servername www.non-97.net
Connecting to 3.173.254.48
CONNECTED(00000006)
depth=2 C=US, O=Amazon, CN=Amazon Root CA 1
verify return:1
depth=1 C=US, O=Amazon, CN=Amazon RSA 2048 M03
verify return:1
depth=0 CN=www.non-97.net
verify return:1
---
Certificate chain
0 s:CN=www.non-97.net
i:C=US, O=Amazon, CN=Amazon RSA 2048 M03
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Feb 24 00:00:00 2025 GMT; NotAfter: Mar 25 23:59:59 2026 GMT
1 s:C=US, O=Amazon, CN=Amazon RSA 2048 M03
i:C=US, O=Amazon, CN=Amazon Root CA 1
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Aug 23 22:26:04 2022 GMT; NotAfter: Aug 23 22:26:04 2030 GMT
2 s:C=US, O=Amazon, CN=Amazon Root CA 1
i:C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: May 25 12:00:00 2015 GMT; NotAfter: Dec 31 01:00:00 2037 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
.
.
(中略)
.
.
-----END CERTIFICATE-----
subject=CN=www.non-97.net
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M03
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: rsa_pss_rsae_sha256
Peer Temp Key: X25519, 253 bits
---
SSL handshake has read 4334 bytes and written 377 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Protocol: TLSv1.3
Server public key is 2048 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_128_GCM_SHA256
Session-ID: C68F155E180682FB9678A84B50BB80D4448A03727F229ADCC9CBD78B4994749D
Session-ID-ctx:
Resumption PSK: <省略>
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 82394 (seconds)
TLS session ticket:
0000 - 01 31 37 35 37 32 35 33-32 37 30 30 30 30 00 00 .1757253270000..
.
.
(中略)
.
.
0080 - 8a cf bf d1 ea 38 b9 b8-23 4e .....8..#N
Start Time: 1757257275
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
closed
X25519
の場合でも正常にTLSのハンドシェイクが行えたことからPQCの鍵交換アルゴリズム以外の通信をサポートしているようです。
最後にCloudFrontがサポートしていない鍵交換アルゴリズムであるsecp521r1
を試します。
> (main ⚡☡=) openssl s_client -connect www.non-97.net:443 -groups secp521r1 -servername www.non-97.net
Connecting to 3.173.254.16
CONNECTED(00000006)
closed
---
no peer certificate available
---
No client certificate CA names sent
Negotiated TLS1.3 group: <NULL>
---
SSL handshake has read 7 bytes and written 414 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Protocol: TLSv1.3
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
はい、TLSのハンドシェイクに失敗しました。
TLS 1.3のみサポートしたい場合に
Amazon CloudFront でTLS 1.3のみ対応した TLS セキュリティポリシーを使用できるようになったアップデートを紹介しました。
古いクライアントをサポートしなければならない場合は採用はなかなか難しいかもしれません。ですが、セキュリティが何よりも重要という場面では使用する出番がありそうです。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!