331.2 暗号化・署名・認証のためのX.509証明書
課題 331: 暗号化
331.2 暗号化・署名・認証のためのX.509証明書
LPIC303の試験範囲である主題331~335まであるうちの「331 暗号化」から「331.2 暗号化・署名・認証のためのX.509証明書」についてのまとめ
総重量:4
説明:
サーバ・クライアント認証両方のために、X.509証明書を利用することができる。 これには、Apache HTTPDのユーザとサーバ認証の実装が含まれる。Apache HTTPDのバージョンは2.4以上を対象としている。主要な知識範囲:
プロトコルバージョンと暗号(cipher)を含む、SSL, TLSの理解。
Apache HTTPDのmod_sslを利用して、SNI, HSTSを含む、HTTPSサービスを提供できるように設定する。
証明書の連鎖を提供し、cipherの設定を調節して、Apache HTTPDのmod_sslを設定する(cipherに特化した知識ではない)。
証明書を利用して、ユーザ認証をするようにApache HTTPDのmod_sslをせっていする。
OCSPを提供するように、Apache HTTPDのmod_sslを設定する。
OpenSSLを、SSL/TLSクライアントとサーバのテストに利用する。
重要なファイル、用語、ユーティリティ:
httpd.conf
mod_ssl
openssl (関連するサブコマンドを含む)
SSL、TLSの理解
用語
SSL:Secure Socket Layer
TLS:Transport Layer Security
バーション
SSL 1.0
SSL 2.0
1994年リリースSSL 3.0
1995年リリース / RFC6101
2014年に発見された POODLE(CVE-2014-3566/JVNDB-2014-004670) という脆弱性によって利用は非推奨となり、多くのWEBサーバーで無効化の対策が取られた。TLS 1.0 / SSL 3.1
1999年リリース / RFC2246
POODLEの脆弱性の影響を受けているため利用は非推奨TLS 1.1 / SSL 3.2
2006年リリース / RFC4346
AESを導入
POODLEの脆弱性の影響を受けているため利用は非推奨TLS 1.2 / SSL 3.3
2008年リリース / RFC5246TLS 1.3
2018年8月リリース / RFC8446
暗号化スイートの種類
鍵交換(kx)
ECDH, RSA, DH, PSK, DHEPSK, ECDHEPSK, RSAPSK認証(Au)
ECDSA, RSA, PSK暗号化(En)
AESGCM, CHACHA20/POLY1305, AES,ハッシュ(Mac)
AEAD, SHA256, SHA1
暗号化スイートの読み取り方
TLS 1.2 まで
TLS_鍵交換_署名_暗号化_ハッシュ関数
例) TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
鍵交換:ECDHE
署名:RSA
暗号化:AES_256_GCM
ハッシュ:SHA384TSL 1.3 から
TLS_暗号化_ハッシュ関数
例) TLS_AES_256_GCM_SHA384
鍵交換:拡張領域 "supported_groups" で指定
署名:拡張領域 "signature_algorithms" で指定
暗号化:AES_256_GCM
ハッシュ:SHA384
コマンド実行例
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# openssl ciphers -v
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
TLS_AES_128_CCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESCCM(128) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-ECDSA-AES256-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(256) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(256) Mac=AEAD
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-CCM TLSv1.2 Kx=RSA Au=RSA Enc=AESCCM(128) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-RSA-AES256-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(256) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-CCM TLSv1.2 Kx=DH Au=RSA Enc=AESCCM(128) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
PSK-AES256-GCM-SHA384 TLSv1.2 Kx=PSK Au=PSK Enc=AESGCM(256) Mac=AEAD
PSK-CHACHA20-POLY1305 TLSv1.2 Kx=PSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD
PSK-AES256-CCM TLSv1.2 Kx=PSK Au=PSK Enc=AESCCM(256) Mac=AEAD
PSK-AES128-GCM-SHA256 TLSv1.2 Kx=PSK Au=PSK Enc=AESGCM(128) Mac=AEAD
PSK-AES128-CCM TLSv1.2 Kx=PSK Au=PSK Enc=AESCCM(128) Mac=AEAD
PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1
PSK-AES128-CBC-SHA256 TLSv1 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA256
PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1
DHE-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESGCM(256) Mac=AEAD
DHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=DHEPSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD
DHE-PSK-AES256-CCM TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESCCM(256) Mac=AEAD
DHE-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESGCM(128) Mac=AEAD
DHE-PSK-AES128-CCM TLSv1.2 Kx=DHEPSK Au=PSK Enc=AESCCM(128) Mac=AEAD
DHE-PSK-AES256-CBC-SHA SSLv3 Kx=DHEPSK Au=PSK Enc=AES(256) Mac=SHA1
DHE-PSK-AES128-CBC-SHA256 TLSv1 Kx=DHEPSK Au=PSK Enc=AES(128) Mac=SHA256
DHE-PSK-AES128-CBC-SHA SSLv3 Kx=DHEPSK Au=PSK Enc=AES(128) Mac=SHA1
ECDHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=ECDHEPSK Au=PSK Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-PSK-AES256-CBC-SHA TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(256) Mac=SHA1
ECDHE-PSK-AES128-CBC-SHA256 TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA256
ECDHE-PSK-AES128-CBC-SHA TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA1
RSA-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=RSAPSK Au=RSA Enc=AESGCM(256) Mac=AEAD
RSA-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=RSAPSK Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
RSA-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=RSAPSK Au=RSA Enc=AESGCM(128) Mac=AEAD
RSA-PSK-AES256-CBC-SHA SSLv3 Kx=RSAPSK Au=RSA Enc=AES(256) Mac=SHA1
RSA-PSK-AES128-CBC-SHA256 TLSv1 Kx=RSAPSK Au=RSA Enc=AES(128) Mac=SHA256
RSA-PSK-AES128-CBC-SHA SSLv3 Kx=RSAPSK Au=RSA Enc=AES(128) Mac=SHA1
[root@lpic303-rocky34 ~]#
補足
「SSL/TLS」という記述を多く見かけるが、技術的にSSLは使われなくなりTLSが主流になっている。
しかし、「SSL証明書」や「OpenSSL」など「SSL」という言葉が定着し残っている。
参考
補足:Apacheとmod_sslのインストール
mod_sslとは
Apache httpd で使われるSSL/TLSに対応したモジュール。
OpenSSLを使用している。
インストール
RockyLinux 9
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# dnf install httpd mod_ssl
[root@lpic303-rocky34 ~]#
Ubuntu 22.04
root@lpic303-ubuntu35:~#
root@lpic303-ubuntu35:~# apt install apache2
root@lpic303-ubuntu35:~# a2enmod ssl
root@lpic303-ubuntu35:~#
設定ファイル
/etc/httpd/conf.d/ssl.conf
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# ls -l /etc/httpd/conf.d/
合計 32
-rw-r--r--. 1 root root 400 10月 28 18:35 README
-rw-r--r--. 1 root root 2916 10月 28 18:35 autoindex.conf
-rw-r--r--. 1 root root 135 2月 2 00:28 special.conf
-rw-r--r--. 1 root root 8720 10月 28 18:32 ssl.conf
-rw-r--r--. 1 root root 1252 10月 28 18:32 userdir.conf
-rw-r--r--. 1 root root 653 2月 2 00:27 welcome.conf
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# cat /etc/httpd/conf.d/ssl.conf
#
# When we also provide SSL we have to listen to the
# standard HTTPS port in addition.
#
Listen 443 https
##
## SSL Global Context
##
## All SSL configuration in this context applies both to
## the main server and all SSL-enabled virtual hosts.
##
# Pass Phrase Dialog:
# Configure the pass phrase gathering process.
# The filtering dialog program (`builtin' is a internal
# terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
# Inter-Process Session Cache:
# Configure the SSL Session Cache: First the mechanism
# to use and second the expiring timeout (in seconds).
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
#
# Use "SSLCryptoDevice" to enable any supported hardware
# accelerators. Use "openssl engine -v" to list supported
# engine names. NOTE: If you enable an accelerator and the
# server does not start, consult the error logs and ensure
# your accelerator is functioning properly.
#
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec
##
## SSL Virtual Host Context
##
<VirtualHost _default_:443>
# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"
#ServerName www.example.com:443
# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# List the protocol versions which clients are allowed to connect with.
# The OpenSSL system profile is used by default. See
# update-crypto-policies(8) for more details.
#SSLProtocol all -SSLv3
#SSLProxyProtocol all -SSLv3
# User agents such as web browsers are not configured for the user's
# own preference of either security or performance, therefore this
# must be the prerogative of the web server administrator who manages
# cpu load versus confidentiality, so enforce the server's cipher order.
SSLHonorCipherOrder on
# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
# The OpenSSL system profile is configured by default. See
# update-crypto-policies(8) for more details.
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that restarting httpd will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convenience.
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
# Client Authentication (Type):
# Client certificate verification type and depth. Types are
# none, optional, require and optional_no_ca. Depth is a
# number which specifies how deeply to verify the certificate
# issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth 10
# Access Control:
# With SSLRequire you can do per-directory access control based
# on arbitrary complex boolean expressions containing server
# variable checks and other lookup directives. The syntax is a
# mixture between C and Perl. See the mod_ssl documentation
# for more details.
#<Location />
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>
# SSL Engine Options:
# Set various options for the SSL engine.
# o FakeBasicAuth:
# Translate the client X.509 into a Basic Authorisation. This means that
# the standard Auth/DBMAuth methods can be used for access control. The
# user name is the `one line' version of the client's X.509 certificate.
# Note that no password is obtained from the user. Every entry in the user
# file needs this password: `xxj31ZMTZzkVA'.
# o ExportCertData:
# This exports two additional environment variables: SSL_CLIENT_CERT and
# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
# server (always existing) and the client (only existing when client
# authentication is used). This can be used to import the certificates
# into CGI scripts.
# o StdEnvVars:
# This exports the standard SSL/TLS related `SSL_*' environment variables.
# Per default this exportation is switched off for performance reasons,
# because the extraction step is an expensive operation and is usually
# useless for serving static content. So one usually enables the
# exportation for CGI and SSI requests only.
# o StrictRequire:
# This denies access when "SSLRequireSSL" or "SSLRequire" applied even
# under a "Satisfy any" situation, i.e. when it applies access is denied
# and no other module can change it.
# o OptRenegotiate:
# This enables optimized SSL connection renegotiation handling when SSL
# directives are used in per-directory context.
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
# SSL Protocol Adjustments:
# The safe and default but still SSL/TLS standard compliant shutdown
# approach is that mod_ssl sends the close notify alert but doesn't wait for
# the close notify alert from client. When you need a different shutdown
# approach you can use one of the following variables:
# o ssl-unclean-shutdown:
# This forces an unclean shutdown when the connection is closed, i.e. no
# SSL close notify alert is sent or allowed to be received. This violates
# the SSL/TLS standard but is needed for some brain-dead browsers. Use
# this when you receive I/O errors because of the standard approach where
# mod_ssl sends the close notify alert.
# o ssl-accurate-shutdown:
# This forces an accurate shutdown when the connection is closed, i.e. a
# SSL close notify alert is sent and mod_ssl waits for the close notify
# alert of the client. This is 100% SSL/TLS standard compliant, but in
# practice often causes hanging connections with brain-dead browsers. Use
# this only for browsers where you know that their SSL implementation
# works correctly.
# Notice: Most problems of broken clients are also related to the HTTP
# keep-alive facility, so you usually additionally want to disable
# keep-alive for those clients, too. Use variable "nokeepalive" for this.
# Similarly, one has to force some clients to use HTTP/1.0 to workaround
# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
# "force-response-1.0" for this.
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
[root@lpic303-rocky34 ~]#
mod_sslを利用したSNI, HTSTを含むHTTPSサービス
SNI
Server Name Indication
SSL/TLSの拡張機能の一つ
TLS 1.0以降
VirtualHostなどの機能を使って一つのIPアドレスで複数のWEBサイトを運営している場合に利用する
SNI 設定例
<VirtualHost x.x.x.x:443>
:
SSLStrictSNIVHostCheck on
:
</VirtualHost>`
HSTS
HTTP Strict Transport Security
Hypertext Strict Transport Security常時SSL
httpアクセスをhttpsにリダイレクトする機能
"preload" をすることで初回のhttpアクセス時の中間者攻撃を防げる
HSTS 設定例
<VirtualHost x.x.x.x:443>
:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
:
</VirtualHost>`
参考
Apache HTTPDのmod_sslで証明書とCipherの設定をする
主な設定
"<VirtualHost default:443> ~ </VirtualHost>" の間に記述する。
SSLEngine on
SSL/TLSの有効化SSLProtocol all -SSLv3
SSL/TLSのバージョンを指定SSLCipherSuite
使用する暗号化スイートSSLCertificateFile /etc/pki/tls/certs/localhost.crt
サーバー証明書SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
サーバー証明書の秘密鍵SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
中間CA証明書
※Apache2.4.8~ SSLCertificateFileで指定する
※SSLCertificateFileで指定するファイルには中間CA証明書とサーバー証明書を連結して保存する
証明書を利用して、ユーザ認証をするようにApache HTTPDのmod_sslを設定する
設定
SSLCACertificateFile
クライアント証明書を発行したCAのCA証明書SSLCARevocationFile
クライアント証明書のCRLを指定SSLCARevocationCheck
- chain:証明書失効リストチェックを有効
- leaf:エンドエンティティ証明書に限定する
- none:CRLをチェックしないSSLVerifyClient
- none:クライアント証明書を必要としない
- optional:クライアント証明書を提示できる
- require:クライアント証明書の提示が必要
- optional_no_ca:クライアント証明書を提示できるが、有効である必要はないSSLVerifyDepth
クライアント証明書検証における CA 証明書の最大の深さ
設定例
<VirtualHost x.x.x.x:443>
:
SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt"
SSLCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl"
SSLCARevocationCheck chain
SSLVerifyClient require
SSLVerifyDepth 1
:
</VirtualHost>
参考
OCSPを提供するように、Apache HTTPDのmod_sslを設定する
OCSP
Online Certificate Status Protocol
SSL証明書が失効していないかオンラインで確認するためのプロトコル
OCSP設定例
<VirtualHost x.x.x.x:443>
:
SSLStaplingResponderTimeout 10
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)
:
</VirtualHost>
OpenSSLを、SSL/TLSクライアントとサーバのテストに利用する
openssl s_client
SSL/TLSクライアントとして通信テストができる
openssl s_client 使い方
openssl s_client [options] [host:port]
openssl s_client -connect 127.0.0.1:443 -CAfile cacert.pem
-connect <サーバーIP:ポート番号>
接続先のサーバーのIPアドレスとポート番号を指定-CAfile <ファイル名>
CA証明書を指定-servername <ドメイン名>
SNI対応のWEBサーバーに対してホスト名を指定する-showcerts
デバッグ:すべての証明書を表示-debug
デバッグ詳細表示-trace
デバッグ:トレースする-quiet
表示する内容を減らす-brief
簡潔に表示する-[ tls1 | tls1_1 | tls1_2 | tls1_3 ] / -no_[ ssl3 | tls1 | tls1_1 | tls1_2 | tls1_3 ]
TLS1.0, 1.1, 1.2, 1.3 有効化
SSL3.0, TLS1.0, 1.1, 1.2, 1.3 無効化
openssl s_server
SSL/TLSサーバーとして通信テストができる
openssl s_server 使い方
openssl s_server [options]
openssl s_server -cert cert.pem -key key.pem -CAfile cacert.pem -WWW
-accept <ポート番号>
待ち受けポート番号を指定(デフォルト 4433)-cert <ファイル名>
サーバー証明書を指定-certform <PEM|DER>
サーバー証明書のフォーマットを指定(デフォルト PEM)-key <ファイル名>
サーバー証明書の秘密鍵を指定-keyform <PEM|DER>
サーバー証明書の秘密鍵のフォーマットを指定(デフォルト PEM)-CAfile <ファイル名>
CA証明書を指定-www, -WWW
簡易的なWEBサーバーとして動作する-quiet
表示する内容を減らす-[ tls1 | tls1_1 | tls1_2 | tls1_3 ] / -no_[ ssl3 | tls1 | tls1_1 | tls1_2 | tls1_3 ]
TLS1.0, 1.1, 1.2, 1.3 有効化
SSL3.0, TLS1.0, 1.1, 1.2, 1.3 無効化
参考
この記事が気に入ったらサポートをしてみませんか?