Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 自签名证书在GlassFish服务器4.0上不起作用_Ssl_Glassfish_Certificate_Self Signed - Fatal编程技术网

Ssl 自签名证书在GlassFish服务器4.0上不起作用

Ssl 自签名证书在GlassFish服务器4.0上不起作用,ssl,glassfish,certificate,self-signed,Ssl,Glassfish,Certificate,Self Signed,我已经创建了一个自签名证书,并将其添加到keystore.jks中,但一旦通过管理控制台在http-listener-2中进行配置,它就无法工作。顺便说一句,默认的“s1as”证书工作正常 服务器信息: Install directory: C:\Program Files\glassfish-4.0\glassfish Installed version: GlassFish Server Open Source Edition 4.0 (build 89) 我所做的: 以管理员身份打开cm

我已经创建了一个自签名证书,并将其添加到keystore.jks中,但一旦通过管理控制台在http-listener-2中进行配置,它就无法工作。顺便说一句,默认的“s1as”证书工作正常

服务器信息:

Install directory: C:\Program Files\glassfish-4.0\glassfish
Installed version: GlassFish Server Open Source Edition 4.0 (build 89)
我所做的:

以管理员身份打开cmd

将关键点工具添加到路径

set PATH=%PATH%;c:\Program Files\Java\jdk1.8.0_20\bin"
生成密钥

C:\Program Files\glassfish-4.0\glassfish\domains\domain1\config>keytool -keysize
 2048 -genkey -alias autofirmado -keyalg RSA -keystore keystore.jks -validity 360
Introduzca la contraseña del almacén de claves:
¿Cuáles son su nombre y su apellido?
  [Unknown]:  Myname
¿Cuál es el nombre de su unidad de organización?
  [Unknown]:  test
¿Cuál es el nombre de su organización?
  [Unknown]:  test2
¿Cuál es el nombre de su ciudad o localidad?
  [Unknown]:  locality
¿Cuál es el nombre de su estado o provincia?
  [Unknown]:  province
¿Cuál es el código de país de dos letras de la unidad?
  [Unknown]:  es
¿Es correcto CN=Myname, OU=test, O=test2, L=locality, ST=province, C=es?
  [no]:  si

Introduzca la contraseña de clave para <autofirmado>
        (INTRO si es la misma contraseña que la del almacén de claves): <ENTER>
然后配置http-listener-2:

alias: autofirmado
keystore: keystore.jks
truststore: cacerts.jks   
然后重新启动服务器并尝试通过https localhost 8181访问,但我收到firefox消息:

“连接被中断”


如果我使用默认的“s1as”键配置GlassFish服务器,它将正常工作。

因为我发现这个问题是由于另一个错误造成的,所以我在这里写下了类似情况下出现问题的一些可能原因

错误的证书名称 这个问题就是这样。我收到了以下信息:

NET::ERR_CERT_AUTHORITY_INVALID
您必须设置CN=localhost才能使其正常工作

What is your first and last name?
  [Unknown]:  localhost
GlassFish安全指南中也规定了这一点:

对于HTTPS主机名验证,确保证书(CN)的名称与站点的完全限定主机名(完全限定域名)匹配非常重要。如果名称不匹配,连接到服务器的客户端将看到安全警报,指出证书名称与站点名称不匹配

错误密钥算法 我使用了
keytool-genkey
命令,但没有指定
-keyalg
选项,这创建了一个带有
SHA1withDSA
的证书

Chrome说,
ERR\u CONNECTION\u关闭了
,在我的服务器日志中我找到了

javax.net.ssl.SSLHandshakeException:没有通用的密码套件
我通过指定keytool-genkey-keyalg RSA解决了这个问题

还更改glassfish实例证书 来自GlassFish安全指南:

DAS使用
s1as
别名进行SSL/TLS身份验证和 实例使用
glassfish实例
别名

根据关于“如果更改s1as证书,还需要更改glassfish实例证书”的评论

错误的密钥库文件 记住:

  • keystore.jks
    文件包含GlassFish服务器证书,包括其私钥
  • cacerts.jks
    文件包含GlassFish服务器可信证书,包括其他实体的公钥
有时这种干扰会使您将公钥放入错误的文件中。这应该是正确的顺序:

#在keystore.jks中生成密钥对
keytool-genkeypair-alias s1as-keystore keystore.jks-keypass changeit-storepass changeit-keyalg RSA
#导出证书
keytool-export-keystore keystore.jks-alias s1as-file s1as.cer-storepass changeit
#将其导入truststore.jks
keytool-import-noprompt-trustcacerts-file s1as.cer-alias s1as-keystore cacerts.jks-storepass changeit
如何检查 此命令显示有关证书的信息:

keytool-v-list-alias-keystore.jks
如果您查看GlassFish提供的原始自签名证书,您有:

  • CN
    • Owner:CN=localhost
      for
      s1as
    • Owner:CN=localhost实例
      用于
      glassfish实例
  • RSA
    签名算法名称:SHA256withRSA
  • 条目类型
    • 条目类型:PrivateKeyEntry
      用于
      keystore.jks
    • Entry type:trustedCertEntry
      for
      cacerts.jks
What is your first and last name?
  [Unknown]:  localhost