Windowsでは、自己署名証明書を「信頼されたルート証明機関」の証明書として登録することで、ブラウザでローカルのシステムにアクセスした際の証明書エラーを出さないようにできる。
以下、参考URLとなる。
Linuxでも同様に、自己署名証明書を「信頼されたルート証明機関」の証明書として登録することで証明書エラーを発生させなくすることが可能となる。
本記事では、Linuxで信頼されるルート証明書として自己署名証明書を登録し、コマンドやブラウザで証明書エラーを表示させないようにする手順を記載する。
環境
本手順の確認環境は以下となる。Red Hat系のOSであれば、同様の手順で対応できるはずだ。
- OS : AlmaLinux release 8.6
登録する証明書情報は以下のとなる。
- CN = My Private CA
- O = Default Company Ltd
- S = Tokyo
- C = JP
自己署名証明書を「信頼されたルート証明機関」の証明書として登録する手順
1. 証明書を配置
証明書を配置する前に、「信頼されたルート証明機関」の証明書リストを以下コマンドで出力してみよう。当然だが登録前なので、ここには自己署名証明書の情報は出力されない。
# trust list
pkcs11:id=%D2%87%B4%E3%DF%37%27%93%55%F6%56%EA%81%E5%36%CC%8C%1E%3F%BD;type=cert
type: certificate
label: ACCVRAIZ1
trust: anchor
category: authority
~(以下略)~
今回の自己署名証明書はcacert.pem
で事前に作成している。これを/etc/pki/ca-trust/source/anchors/
のディレクトリにコピーする。
# cp cacert.pem /etc/pki/ca-trust/source/anchors/
2. 証明書反映コマンド実行
証明書配置後、以下コマンドで反映する。これだけで作業は完了となる。
# update-ca-trust
最後に、証明書の登録状況を確認しておこう。追加された証明書が一番上に表示されるはずだ。
# trust list | head -6
pkcs11:id=%28%C6%94%08%49%18%A4%19%B3%94%A9%0D%F1%54%95%00%AA%98%87%F9;type=cert
type: certificate
label: My Private CA
trust: anchor
category: authority
CA証明書登録後の接続確認
1. curl
による確認
まず、CA証明書登録前の情報を確認してみると、以下の通り、SSL certificate problem: unable to get local issuer certificate
(ローカルで発行された証明書が取得できない)のエラーで接続に失敗していることがわかる。
※ちなみに、本エラーを無視して強制的に接続する場合は、-k
オプションを付与すればよい。
# curl -v https://192.168.11.50
* Rebuilt URL to: https://192.168.11.50/
* Trying 192.168.11.50...
* TCP_NODELAY set
* Connected to 192.168.11.50 (192.168.11.50) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
CA証明書を登録後、再度同一コマンドで接続すると、今度はSSL certificate verify ok.
のメッセージが出力されており、接続に成功していることがわかる。
# curl -v https://192.168.11.50
* Rebuilt URL to: https://192.168.11.50/
* Trying 192.168.11.50...
* TCP_NODELAY set
* Connected to 192.168.11.50 (192.168.11.50) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (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-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: C=JP; ST=Tokyo; L=Default City; O=Default Company Ltd; CN=t1050harb
* start date: Apr 29 04:08:32 2023 GMT
* expire date: Apr 26 04:08:32 2033 GMT
* subjectAltName: host "192.168.11.50" matched cert's IP address!
* issuer: C=JP; ST=Tokyo; O=Default Company Ltd; CN=My Private CA
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: 192.168.11.50
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx
~(以下略)~
2. ブラウザによる確認
ブラウザはFirefoxにて確認する。ブラウザによる接続も、まずはCA証明書登録前の状態を確認すると、「潜在的なセキュリティリスクあり」の警告でエラーになる。
CA証明書を登録後は、特に警告表示なく接続先の画面が表示される。アドレスバーからも、「このサイトとの接続は安全です。」と表示されていることがわかる。
以上で、Linuxで信頼されるルート証明書として自己署名証明書を登録し、コマンドやブラウザで証明書エラーを表示させないようにする手順は完了となる。
0 件のコメント:
コメントを投稿