gpt4 book ai didi

ssl - X509 SSL : No name matching found

转载 作者:行者123 更新时间:2023-12-04 21:59:41 25 4
gpt4 key购买 nike

我正在尝试使用 openssl 和 keytool 命令为 Kafka 配置 SSL。
我将证书配置为接受特定的 CN 和一些替代名称;这是我所做的:

openssl req -x509 -nodes -newkey rsa:2048 -days 3650 -sha256 -keyout ca-key -out ca-cert -reqexts SAN -extensions SAN -subj '/CN=kafkabroker' -config <(cat /etc/ssl/openssl.cnf; printf "[SAN]\nsubjectAltName=DNS:kafkabroker,DNS:kafka-broker,DNS:localhost,DNS:host.docker.internal,IP:127.0.0.1,IP:1.1.1.1, IP:2.2.2.2")


keytool -keystore kafka.server.keystore.jks -alias kafkabroker -validity 365 -genkey -storepass passw -keypass passw -ext SAN=DNS:kafkabroker,DNS:localhost,IP:1.1.1.1,DNS:juliet,DNS:host.docker.internal,IP:2.2.2.2,IP:127.0.0.1


keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert
keytool -keystore kafka.server.keystore.jks -alias kafkabroker -certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 3650 -CAcreateserial -passin pass:passw
keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert
keytool -keystore kafka.server.keystore.jks -alias kafkabroker -import -file cert-signed
keytool -keystore kafka.client.keystore.jks -alias kafkabroker -validity 365 -genkey -storepass passw -keypass passw -ext SAN=DNS:kafkabroker,DNS:localhost,IP:1.1.1.1,DNS:juliet,DNS:host.docker.internal,IP:2.2.2.2,IP:127.0.0.1
keytool -keystore kafka.client.keystore.jks -alias kafkabroker -certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 3650 -CAcreateserial -passin pass:passw
keytool -keystore kafka.client.keystore.jks -alias CARoot -import -file ca-cert
keytool -keystore kafka.client.keystore.jks -alias kafkabroker -import -file cert-signed

keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert

在本地环境中,具有主机名“kafkabroker”它可以工作,但是当我在另一个环境中运行具有相同证书的 kafka 时,该环境在证书创建期间配置了 IP,它说:

java.security.cert.CertificateException: No subject alternative names present



我不明白为什么。我检查了作为信任库和 keystore 的 jks 文件,我可以清楚地看到“替代名称”部分完全填充了上述名称和 IP 地址。

最佳答案

主要问题是,kafka 在签名的 SERVER 证书(位于 server.keystore.jks 中)中需要 SAN。如我所见,在您的请求部分中,您没有添加 SAN 名称:

openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 3650 -CAcreateserial -passin pass:passw -extfile openssl-sign.cnf -extensions server_cert

准备好添加/编辑您的/etc/pki/tls/openssl.cnf(CentOS/RHEL 目录)或/etc/ssl/openssl.cnf(其他)- server_cert(或类似物)部分。另一种方法是创建自己的 openssl.cnf 副本,如我的示例所示(文件 openssl-sigh.cnf)。
server_cert 部分可以是这样的(在 cnf 文件中的任何位置):
[ server_cert ]
# Extensions for server certificates (`man x509v3_config`).
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "Openssl Server generated Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth,clientAuth
subjectAltName = DNS:kafkabroker,DNS:localhost,IP:1.1.1.1,DNS:juliet,DNS:host.docker.internal,IP:2.2.2.2,IP:127.0.0.1

然后通过以下方式检查您的结果:
openssl req -text -noout -verify -in cert-file
openssl x509 -text -noout -in cert-signed

您应该会在 x509 扩展中看到 SAN 文本行。

我不确定 client.keystore - 您创建另一对具有相同名称的另一个证书。首先尝试 server.keystore.jks 检查。

关于ssl - X509 SSL : No name matching <hostname> found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com