【发布时间】:2018-06-18 04:12:42
【问题描述】:
我已使用以下命令将证书生成到 keycloak 中
keytool -genkey -alias initcert -keyalg RSA -keystore keycloak.jks -validity 365 -keysize 2048
下面是上面命令的输出
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: initcert
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=initcert, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes
Enter key password for <initcert>
(RETURN if same as keystore password):
Re-enter new password:
在此导出后导出到 keycloak
keytool -export -noprompt -trustcacerts -keystore keycloak.jks -alias initcert -file keycloak.cer -storepass keycloak
现在所有这些都使用相同的证书文件到 Windows10 客户端机器中并像这样在 Java 中导入
keytool -import -noprompt -trustcacerts -alias "initcert" -file keycloak.cer -keystore "C:\Program Files\Java\jdk1.8.0_152\jre\lib\security\cacerts"
但是当我尝试从 JBoss 服务器连接 keycloak 时,我得到了
证书中的主机名不匹配: !=
在 Jboss 服务器的独立文件中添加
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enable-lookups="false" secure="true">
<ssl name="ssl" key-alias="initcert" password="keycloak" certificate-key-file="C:\Users\user\Documents\MyFiles\New\keycloak.jks" protocol="TLSv1,SSLv3,SSLv2" verify-client="false"/>
仅供参考,Keycloak 指向 OpenJDK,而客户端机器是 Oracle JDK。
我在生成证书的同一台机器上尝试了以下命令,它给出了正确的结果。
keytool -list -v -alias initcert -storepass keycloak -keystore keycloak.jks
上述命令的结果
Alias name: initcert
Creation date: Jan 9, 2018
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=initcert, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Issuer: CN=initcert, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Serial number: 2bb3190d
Valid from: Tue Jan 09 09:52:46 IST 2018 until: Wed Jan 09 09:52:46 IST 2019
Certificate fingerprints:
MD5: EF:A3:91:B8:B0:1C:61:F4:9D:9C:D6:05:37:D2:13:7D
SHA1: 73:A1:DF:15:17:1F:0E:34:0C:44:ED:46:90:24:4E:75:F1:0E:BD:48
SHA256: BE:5A:FE:06:97:E4:1C:55:14:E4:17:01:DD:02:76:88:44:7D:E5:39:4E:3C:5A:03:12:DD:3E:88:C1:96:9C:D2
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A0 57 CC B8 39 1C C9 1A 1A EE 74 72 90 99 89 8D .W..9.....tr....
0010: 60 90 F3 A3 `...
]
]
【问题讨论】:
-
cn 应该是你服务器的主机名
-
也可以是机器的ipaddress?
-
否:它必须是 DNS 中定义的主机名
-
服务器的 IP 地址将进入主题备用名称 (SAN) 字段。