TL;DR
使ってるglobal-bundle.pem
が古かったです。
再度以下から取得しなおしたら解決しました。
https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
検証方法
RDSの認証機関にrds-ca-rsa2048-g1
を使用しています。
そこで、RDS Root 2019 CA
が含まれているかを確認します。
以下を実行して、何も出力されなければダメです。
Javaのランタイムがこちら
keytool -printcert -v -file global-bundle.pem | grep -A2 "RDS Root 2019 CA"
Go langでやりたい方はこちら
main.go
package main
import (
"crypto/x509"
"encoding/pem"
"fmt"
"log"
"os"
"strings"
)
func main() {
pemData, err := os.ReadFile("global-bundle.pem")
if err != nil {
log.Fatalf("Failed to read PEM file: %v", err)
}
// PEMファイルから証明書を抽出
for {
block, rest := pem.Decode(pemData)
if block == nil {
break
}
if block.Type != "CERTIFICATE" || len(block.Bytes) == 0 {
log.Println("No certificates found in PEM data")
return
}
// X.509形式の証明書に変換
cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
log.Fatalf("Failed to parse certificate: %v", err)
}
if strings.Contains(cert.Issuer.String(), "RDS Root 2019 CA") {
fmt.Println("Certificate Details:")
fmt.Println("Issuer:", cert.Issuer)
fmt.Println("Subject:", cert.Subject)
fmt.Println("Not Before:", cert.NotBefore)
fmt.Println("Not After:", cert.NotAfter)
}
pemData = rest
}
}
私の場合は何も表示されなかったので、このglobal-bundle.pem
には求めているRDS Root 2019 CA
が含まれていないことがわかります。
どこで拾ってきたglobal-bundle.pem
なんでしょうか。再取得しましょう。