2025 年 10 月 06 日
AlmaLinux 10 で PQC(耐量子計算機暗号)をお試し(その2)
― ハイブリッド鍵交換 (X25519MLKEM768) を Apache でお試し ―
Apache httpd のハイブリッド鍵交換 (X25519MLKEM768) 対応
今回「その2」では、ハイブリッド鍵交換 (X25519MLKEM768) を Apache で試します。
ちなみに、X25519MLKEM768 は、古典的暗号(X25519)と新しい量子耐性暗号(ML-KEM768: Module-Lattice Key Encapsulation Mechanism 768)を組み合わせた鍵交換方式で、前者の信頼性と、後者による「Harvest Now, Decrypt Later(HNDL)」攻撃への対応という、両者の強みが組み合わされたものであり、既に Google Chrome ブラウザ等が対応済みです。
まず、ベースの環境は「その1」に記載したとおり、AlmaLinux 10 に crypto-policies-pq-preview パッケージをインストールし、PQC を試すためにサブポリシー TEST-PQ を設定した環境です。
ここに Apache httpd と TLS 用のモジュール mod_ssl をインストールします。
# dnf -y install httpd mod_ssl
設定ファイル ssl.conf(/etc/httpd/conf.d/ssl.conf)を編集し、主要な設定としては以下としました
(一部、■■■で伏せています)。
Listen 443 https
<VirtualHost _default_:443> ServerName ■■■.■■■.cybertrust.co.jp SSLEngine on SSLHonorCipherOrder on SSLCipherSuite PROFILE=SYSTEM SSLProxyCipherSuite PROFILE=SYSTEM SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key </VirtualHost>
今回は、「鍵交換」についてはハイブリッド鍵交換 (X25519MLKEM768) を試す一方、「認証」は従来のアルゴリズムを使えばよいので、他の例に倣って、ECDSA を使った自己署名の TLS サーバー証明書を作ります。
まずは鍵生成を行います。
# cd /etc/pki/tls # openssl genpkey -out private/localhost.key \ -algorithm EC -pkeyopt ec_paramgen_curve:P-256 # cat private/localhost.key -----BEGIN PRIVATE KEY----- MIGHA・・・ (略) ・・・oyfYhwgTEU2Oh -----END PRIVATE KEY-----
次に証明書を作成します。
# openssl req -new -x509 -days 365 \ -key private/localhost.key -out certs/localhost.crt \ -subj "/C=JP/L=Tokyo/O=Cybertrust Japan Co Ltd/CN=■■■.■■■.cybertrust.co.jp" \ -addext "subjectAltName = DNS:■■■.■■■.cybertrust.co.jp" \ -addext "basicConstraints = critical,CA:false" # cat certs/localhost.crt -----BEGIN CERTIFICATE----- MIICbDCCAhOgAwIBAgIUTrstUf2JdoVHeKqAHAWYMeJ+4UgwCgYIKoZIzj0EAwIw cjELMAkGA1UEBhMCSlAxDjAMBgNVBAcMBVRva3lvMSAwHgYDVQQKDBdDeWJlcnRy (略) LDAqgih3d3cucHEtYWxtYWxpbnV4LXRlc3QwMS5jeWJlcnRydXN0LmNvLmpwMAwG A1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDRwAwRAIgDpslkxxSq4WeiEjSLZzM2hIe CctCSWEDx/SR3vygWi8CIB3gKnlo5TukABIHV4fGtfRfu9Q5sL9zilB65ntMO530 -----END CERTIFICATE-----
上記で、他では記載のない「-addext "basicConstraints = critical,CA:false" 」を追加していますが、これを追加しないで証明書を作成したところ、証明書内の Basic Constraints(基本制約)拡張が以下のように「CA:TRUE」となっており、TLS サーバー証明書ではなく、認証局証明書を示すことから、これを追加しています。
X509v3 Basic Constraints: critical CA:TRUE
作成された証明書の内容は次のようになっており、基本制約拡張において CA:FALSE になっていることが確認できます(一部、■■■で伏せています)。
# openssl x509 -text -noout -in certs/localhost.crt
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
4e:bb: (略) :e1:48
Signature Algorithm: ecdsa-with-SHA256
Issuer: C=JP, L=Tokyo, O=Cybertrust Japan Co Ltd, CN=■■■.■■■.cybertrust.co.jp
Validity
Not Before: Sep (略) 2025 GMT
Not After : Sep (略) 2026 GMT
Subject: C=JP, L=Tokyo, O=Cybertrust Japan Co Ltd, CN=■■■.■■■.cybertrust.co.jp
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:80:7c:9d:4a:8a:1c:a9:16:0b:f6:41:35:5b:c0:
(略)
04:c4:53:63:a1
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Subject Key Identifier:
DD:E3: (略) :BC:27
X509v3 Authority Key Identifier:
DD:E3: (略) :BC:27
X509v3 Subject Alternative Name:
DNS:■■■.■■■.cybertrust.co.jp
X509v3 Basic Constraints: critical
CA:FALSE
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:44:02:20:0e:9b:25:93:1c:52:ab:85:9e:88:48:d2:2d:9c:
(略)
5f:bb:d4:39:b0:bf:73:8a:50:7a:e6:7b:4c:3b:9d:f4
準備ができたので、httpd を起動し、ステータスも確認。
# systemctl start httpd # systemctl status httpd ●httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled) Active:active (running)since ・・・ (略)
ハイブリッド鍵交換 (X25519MLKEM768) を扱えるブラウザ(今回は Windows PC 上の Google Chrome を使用)で上記 AlmaLinux 10 上の Apache に接続して確認。

図の右下部分で赤枠で囲ったとおり、鍵交換が「X25519MLKEM768」となっています。
ということで、ハイブリッド鍵交換を Apache で試すことができました。
「その2」はここまでとなります。
次回「その3」では、ハイブリッド鍵交換 (X25519MLKEM768) を nginx で試します。
関連 Web サイト
お問い合わせ
IT 環境全体が PQC レディーになるにはまだ多少時間を要するものと想像しますが、その中でご質問・相談事項などございましたら、お気軽にお問い合わせください(問合せ先:pqctrial@cybertrust.co.jp)。
* AlmaLinux は、The AlmaLinux OS Foundation の商標です。
* Linux は、Linus Torvalds 氏の日本およびその他の国における登録商標または商標です。
* Red Hat、Red Hat Enterprise Linux は、米国およびその他の国における Red Hat, Inc. およびその子会社の商標または登録商標です。
* その他、記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。
* サイバートラストは、AlmaLinux OS Foundation に日本企業初のプラチナスポンサーとして参画する AlmaLinux OS の公式ディストリビューターですが、本ブログは当社の R&D チームで試行した結果の共有であり、AlmaLinux OS に関わる公式サポート情報ではなく、また、AlmaLinux OS Foundation の公式見解でもありません。併せて、本ブログはテクノロジープレビューパッケージを試したものであるため、機能的に完成していない可能性があり、本番用途への展開には適しません。









