3.3. 指定应用程序自己的证书
3.3.1. 为 HTTPS 部署您自己的证书
概述
在使用 HTTPS 传输时,使用 XML 配置文件部署应用程序的证书。
流程
要为 HTTPS 传输部署应用程序自己的证书,请执行以下步骤:
获取 Java 密钥存储格式 CertName
.jks
的应用程序证书。有关如何以 Java 密钥存储格式创建证书的说明,请参阅 第 2.5.3 节 “使用 CA 在 Java Keystore 中创建签名证书”。注意有些 HTTPS 客户端(如 Web 浏览器)执行 URL 完整性检查,该检查需要证书的身份以匹配在其上部署服务器的主机名。详情请查看 第 2.4 节 “HTTPS 证书的特殊要求”。
将证书的密钥存储( CertName
.jks
)复制到部署主机上的证书目录;例如,X509Deploy/certs
。certificate 目录应该是安全的目录,它只能由管理员和其他特权用户写入。
编辑相关的 XML 配置文件,以指定证书密钥存储的位置 CertName
.jks
。您必须在相关 HTTPS 端口的配置中包含sec:keyManagers
元素。例如,您可以配置客户端端口,如下所示:
<http:conduit id="{Namespace}PortName.http-conduit"> <http:tlsClientParameters> ... <sec:keyManagers keyPassword="CertPassword"> <sec:keyStore type="JKS" password="KeystorePassword" file="certs/CertName.jks"/> </sec:keyManagers> ... </http:tlsClientParameters> </http:conduit>
其中
keyPassword
属性指定解密证书的私钥(即 CertPassword )所需的密码,即 CertPassword,即信任存储使用 JKS 密钥存储实施的type
属性,password
属性指定访问 CertName.jks
密钥存储(即 KeystorePassword)所需的密码。配置服务器端口,如下所示:
<http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:keyManagers keyPassword="CertPassword"> <sec:keyStore type="JKS" password="KeystorePassword" file="certs/CertName.jks"/> </sec:keyManagers> ... </http:tlsServerParameters> </http:destination>
重要您必须在服务器端将 secureSocketProtocol 设置为
TLSv1
,以便防止 Poodle 漏洞(CVE-2014-3566)警告包含应用程序证书的目录(例如,X509Deploy
/certs/
)应为安全目录(即,仅由管理员读取和写入)。警告包含 XML 配置文件的目录应该是安全目录(即仅由管理员读取和写入),因为配置文件以纯文本形式包含密码。