[アップデート] Amazon CloudFront でTLS 1.3のみ対応した TLS セキュリティポリシーを使用できるようになりました

[アップデート] Amazon CloudFront でTLS 1.3のみ対応した TLS セキュリティポリシーを使用できるようになりました

TLS 1.3のみサポートしたい場合に
2025.09.08

ポスト量子暗号に対応したTLS 1.3のみ利用させたい

こんにちは、のんピ(@non____97)です。

皆さんはポスト量子暗号(以降PQC)に対応したTLS 1.3のみ利用させたいなと思ったことはありますか? 私はあります。

以下記事で紹介されているようにPQCのワークショップもあったりします。

https://dev.classmethod.jp/articles/using-pq-crypto-on-aws/

PQCの対応として、ハイブリッド鍵交換という手法があります。これは複数の鍵交換アルゴリズムを使用することで一部が破られても安全性を維持しようとするアプローチです。ハイブリッド鍵交換については以下インターネットドラフトおよび、解説資料が参考になります。

https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/

https://www.slideshare.net/slideshow/tls-1-3-hybrid-post-quantum-key-exchange-for-tls-1-3/274038767

これら資料の中でもX25519MLKEM768SecP256r1MLKEM768といったECDHE(楕円曲線Diffie-Hellman鍵共有)とML-KEM(鍵カプセル化アルゴリズム)を組み合わせた鍵交換方式が紹介されています。

特にX25519MLKEM768についてはCloudflareやApple、AkamaiのドキュメントでもPQCの文脈で紹介されています。

https://developers.cloudflare.com/ssl/post-quantum-cryptography/

https://support.apple.com/ja-jp/122756

https://www.akamai.com/ja/blog/security/post-quantum-cryptography-implementation-considerations-tls

今回、アップデートによりCloudFrontでPQCに対応したTLS 1.3のセキュリティポリシーが使用できるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/09/amazon-cloudfront-TLS-policy-post-quantum-support/

実際にドキュメントを見てみると、以下のように先で紹介したインターネットドラフト内で出てきた鍵交換方式がサポートされていることが紹介されています。

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

X25519MLKEM768SecP256r1MLKEM768もありますね。

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以降から暗号化がされていました。

3.TLSv1_2_2021_tls1_3_pcapng.png

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を選択して更新します。

1.TLSv1.3_2025変更.png

更新されたことを確認します。

2.ディストリビューション設定が正常に更新されました。.png

ちなみに、こちらのセキュリティポリシーでサポートしている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がそもそも返ってきていないことが分かります。

4.TLSv1_3_2025_tls1_2_pcapng.png

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)でした!

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.