制作JKS文件
JKS(Java Keystore)文件是JAVA软件用来管理和使用SSL证书的文件格式,我们首先需要制作完成JKS文件。您在递交订单时,会采用以下两种方式,请按照不同的说明制作JKS文件。
情况一:系统自动生成CSR(证书请求文件)
如果您在递交订单时,选择“系统自动生成CSR(证书请求文件)”:在您递交订单时,会要求您下载并保存server.key文件;在订单完成后,请在“控制台→订单查询→订单详细页”下载“CRT文件”,保存为server.crt。请到 JKS在线合成工具 ,使用server.key和server.crt文件合成一个新的JKS文件。在这里需要设置2个参数:
- 别名:导入到JKS中的密钥对的索引名称(que)。
- 密码:访问JKS的密码,需要在Jetty配置文件中写入。
情况二:手工上传CSR(证书请求文件)
如果您在递交订单时,选择“我手工上传CSR(证书请求文件)”:您的CSR文件应该是根据Jetty(或Tomcat)文档,使用KeyTool.exe制作的。在订单完成后,请在“控制台→订单查询→订单详细页”下载“P7B文件”,保存为server.p7b,运行命令,将P7B文件导入原来的jks文件:
keytool -import -keystore server.jks -alias ssl -file server.p7b
Jetty SSL配置
1. 请将server.jks文件上传到服务器,打开配置文件etc/jetty-ssl.xml,修改配置如下 (区分字母大小写):
<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory"> <Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.keystore" default="etc/cert/server.jks"/></Set> <Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="JKS密码"/></Set> <Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="JKS密码"/></Set> <Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/cert/server.jks"/></Set> <Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="JKS密码"/></Set> <Set name="EndpointIdentificationAlgorithm"></Set> <Set name="NeedClientAuth"><Property name="jetty.ssl.needClientAuth" default="false"/></Set> <Set name="WantClientAuth"><Property name="jetty.ssl.wantClientAuth" default="false"/></Set> <Set name="ExcludeCipherSuites"> <Array type="String"> <Item>SSL_RSA_WITH_DES_CBC_SHA</Item> <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item> <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item> <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item> <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item> </Array> </Set> <!-- =========================================================== --> <!-- Create a TLS specific HttpConfiguration based on the --> <!-- common HttpConfiguration defined in jetty.xml --> <!-- Add a SecureRequestCustomizer to extract certificate and --> <!-- session information --> <!-- =========================================================== --> <New id="sslHttpConfig" class="org.eclipse.jetty.server.HttpConfiguration"> <Arg><Ref refid="httpConfig"/></Arg> <Call name="addCustomizer"> <Arg><New class="org.eclipse.jetty.server.SecureRequestCustomizer"/></Arg> </Call> </New> </Configure>
2. 编辑jetty服务器目录中的etc/jetty-https.xml,配置https所使用的443端口,修改配置如下 (区分字母大小写):
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Add a HTTPS Connector. -->
<!-- Configure an o.e.j.server.ServerConnector with connection -->
<!-- factories for TLS (aka SSL) and HTTP to provide HTTPS. -->
<!-- All accepted TLS connections are wired to a HTTP connection.-->
<!-- -->
<!-- Consult the javadoc of o.e.j.server.ServerConnector, -->
<!-- o.e.j.server.SslConnectionFactory and -->
<!-- o.e.j.server.HttpConnectionFactory for all configuration -->
<!-- that may be set here. -->
<!-- =========================================================== -->
<Call id="httpsConnector" name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="acceptors" type="int"><Property name="ssl.acceptors" default="-1"/></Arg>
<Arg name="selectors" type="int"><Property name="ssl.selectors" default="-1"/></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.SslConnectionFactory">
<Arg name="next">http/1.1</Arg>
<Arg name="sslContextFactory"><Ref refid="sslContextFactory"/></Arg>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="sslHttpConfig"/></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="https.port" default="443" /></Set>
<Set name="idleTimeout"><Property name="https.timeout" default="30000"/></Set>
<Set name="soLingerTime"><Property name="https.soLingerTime" default="-1"/></Set>
<Set name="acceptorPriorityDelta"><Property name="ssl.acceptorPriorityDelta" default="0"/></Set>
<Set name="selectorPriorityDelta"><Property name="ssl.selectorPriorityDelta" default="0"/></Set>
<Set name="acceptQueueSize"><Property name="https.acceptQueueSize" default="0"/></Set>
</New>
</Arg>
</Call>
</Configure>
3. 编辑jetty服务器目录中的start.ini文件,在最后加上:
jetty.dump.stop=
etc/jetty-ssl.xml
etc/jetty-https.xml
4. 重启Jetty。
最新修订日期:2019年05月18日