linux セキュリティ 暗号化 サーバー 開発

MariaDBのアップデートしたら証明書エラーが発生

RockyLinuxでMaria DBをアップデートしようとしたら下記エラーが発生した。

# dnf update
MariaDB                                                                                                                                                        0.0  B/s |   0  B     00:00    
Errors during downloading metadata for repository 'mariadb':
  - Curl error (60): Peer certificate cannot be authenticated with given CA certificates for https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.5/centos8-amd64/repodata/repomd.xml [SSL certificate problem: unable to get local issuer certificate]
エラー: repo 'mariadb' のメタデータのダウンロードに失敗しました : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

認証局エラーで落ちてるっぽい。

証明書確認

curlで実行

#curl --head https://ftp.yz.yamagata-u.ac.jp
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.


# curl --head https://ftp.yz.yamagata-u.ac.jp --insecure
HTTP/2 200 
last-modified: Sat, 01 Jan 2022 04:48:06 GMT
etag: "610-5d47dfe4ccd80"
accept-ranges: bytes
content-length: 1552
content-type: text/html
date: Tue, 29 Mar 2022 16:02:39 GMT
server: Apache/2.4.52 (Unix) OpenSSL/1.1.1n

証明書エラーが出るので、RockyLinuxに認証局の証明書がなさそう。

認証局確認

証明書・中間証明書の確認

ブラウザで証明書を確認

今日証明書更新とかタイムリーであること。

発行者はNII Open Domain CAという国立情報学研究所のオープンドメイン認証局だそう。そんなのあるんだ。

Windowsではこの中間証明書もデフォルトで入ってるというのはすごいですね。

ルート証明書確認

国立情報学研究所リポジトリにアクセスして、G7の中間CAを取得

ルート証明書はSECOM Trust System Co Ltdみたい。

opensslでSSL通信で送られている証明書の確認

OpenSSLで実際に送られている証明書を確認

# openssl s_client -connect ftp.yz.yamagata-u.ac.jp:443 -showcerts
CONNECTED(00000003)
depth=0 C = JP, ST = Yamagata, L = Yamagata, O = Yamagata University, OU = Networking and Computing Service Center, CN = ftp.yz.yamagata-u.ac.jp
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = JP, ST = Yamagata, L = Yamagata, O = Yamagata University, OU = Networking and Computing Service Center, CN = ftp.yz.yamagata-u.ac.jp
verify error:num=21:unable to verify the first certificate
verify return:1
depth=0 C = JP, ST = Yamagata, L = Yamagata, O = Yamagata University, OU = Networking and Computing Service Center, CN = ftp.yz.yamagata-u.ac.jp
verify return:1
---
Certificate chain
 0 s:C = JP, ST = Yamagata, L = Yamagata, O = Yamagata University, OU = Networking and Computing Service Center, CN = ftp.yz.yamagata-u.ac.jp
   i:C = JP, O = "SECOM Trust Systems CO.,LTD.", CN = NII Open Domain CA - G7 RSA
-----BEGIN CERTIFICATE-----
MIIH4zCCBsugAwIBAgIQRuJJgVA2jvHPPDRz5XhueDANBgkqhkiG9w0BAQsFADBa
・
・
・
---
Server certificate
subject=C = JP, ST = Yamagata, L = Yamagata, O = Yamagata University, OU = Networking and Computing Service Center, CN = ftp.yz.yamagata-u.ac.jp

issuer=C = JP, O = "SECOM Trust Systems CO.,LTD.", CN = NII Open Domain CA - G7 RSA

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2583 bytes and written 401 bytes
Verification error: unable to verify the first certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 21 (unable to verify the first certificate)
---
・
・
・

中間CAの証明書送られてきてないやん。つけ忘れたのか、つけなくなったのか・・・

しばらくしたら相手サーバ側で中間証明書つけてくれそうだけど、中間証明書を信頼すればいいだけなので、対応は簡単にできるのでやってみることに。

対応方法

「tls-ca-bundle.pem」を確認するとSECOMのルート証明書(Security Communication RootCA2)は入っていたので、中間CAをRockyLinuxにつけてあげれば通信できそう。

tls-ca-bundle.pemのコピー

あとで戻せれるようにtls-ca-bundle.pemをコピー

cd  /etc/pki/ca-trust/extracted/pem
cp tls-ca-bundle.pem tls-ca-bundle.pem_20220330
diff tls-ca-bundle.pem tls-ca-bundle.pem_20220330
#何もないこを確認

中間証明書のインストール

cd /etc/pki/ca-trust/source/anchors/
#中間証明書をダウンロード
wget https://repo1.secomtrust.net/sppca/nii/odca4/pem/nii-odca4g7rsa.cer

#update-ca-trustで更新
update-ca-trust extract

#diffでNII Open Domain CA - G7 RSAがインストールされていることを確認
cd  /etc/pki/ca-trust/extracted/pem
diff tls-ca-bundle.pem tls-ca-bundle.pem_20220330
1,31d0
< # NII Open Domain CA - G7 RSA
< -----BEGIN CERTIFICATE-----
< MIIE8DCCA9igAwIBAgIQIrmxhYemmUO17DaPTK9o9zANBgkqhkiG9w0BAQsFADBd
・
・
・

curl確認

curl --head https://ftp.yz.yamagata-u.ac.jp 
HTTP/2 200 
last-modified: Sat, 01 Jan 2022 04:48:06 GMT
etag: "610-5d47dfe4ccd80"
accept-ranges: bytes
content-length: 1552
content-type: text/html
date: Tue, 29 Mar 2022 16:35:19 GMT
server: Apache/2.4.52 (Unix) OpenSSL/1.1.1n

証明書エラーでなくなった

dnf update確認

# dnf update
MariaDB                                                                                                                                                        3.6 MB/s | 601 kB     00:00    
Remi's RPM repository for Enterprise Linux 8 - x86_64                                                                                                          1.0 MB/s | 4.0 MB     00:03    
Remi's Modular repository for Enterprise Linux 8 - x86_64                                                                                                      310 kB/s | 973 kB     00:03    
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64                                                                                                     605 kB/s | 2.1 MB     00:03    
依存関係が解決しました。
行うべきことはありません。
完了しました!

dnfもうまくいった

中間証明書の削除

中間証明書が不要となった場合は「/etc/pki/ca-trust/source/anchors/」に入っている中間証明書をrmコマンドで削除し
「update-ca-trust extract」を実行すれば削除してくれるみたい

雑感

https://www.yamagata-u.ac.jp/jp/は中間CAも送信されてたので、待てば対応してくれそう。

-linux, セキュリティ, 暗号化, サーバー, 開発
-, ,