我正在尝试在我的Jetty上配置SSL.
我读到这个:http: //docs.codehaus.org/display/JETTY/How+to+configure+SSL 并创建了一个密钥库.
然后,我直接跳到第4节.但是这个配置文件在哪里我应该配置Jetty?
我试图搜索jetty.xml,但我的计算机上没有这样的...
for*_*ian 39
我有很多问题让它发挥作用,但我终于知道如何让它发生.我正在使用ubuntu 10.04和java 7.它可能在windows下完成,但所有命令行都是bash命令,也许可以用cigwin/mingw做同样的事情.
我使用了Jetty 8.1.8.从codehaus下载并选择linux的.tar.gz文件(.zip for windows).
将文件解压缩到您希望的任何目录中,为了本文/答案,这将是您的{jetty}主文件夹.
转到{jetty}/etc目录.
按顺序执行以下所有命令行.无论何时询问密码,都要始终输入相同的密码.密码用于保护密钥文件,密钥库和证书本身.有时,将要求密码解锁密钥库或使用生成的密钥.一旦您了解了所有内容以及如何正确使用密码,您可以在准备就绪时更改这些密码(生产使用更安全).否则,在询问时输入请求的信息.
openssl genrsa -des3 -out jetty.key
openssl req -new -x509 -key jetty.key -out jetty.crt
keytool -keystore keystore -import -alias jetty -file jetty.crt -trustcacerts
openssl req -new -key jetty.key -out jetty.csr
openssl pkcs12 -inkey jetty.key -in jetty.crt -export -out jetty.pkcs12
keytool -importkeystore -srckeystore jetty.pkcs12 -srcstoretype PKCS12 -destkeystore keystore
Run Code Online (Sandbox Code Playgroud)
现在,您必须编辑{jetty} /etc/jetty-ssl.xml并配置密码以匹配证书生成期间使用的密码.如果要混淆密码,请返回命令行.转到你的{jetty}主目录并执行以下命令:
java -cp lib/jetty-util-8.1.8.v20121106.jar org.eclipse.jetty.util.security.Password "{PASSWORD}"
Run Code Online (Sandbox Code Playgroud)
更改{PASSWORD}以获取实际密码,然后更改模糊密码,包括jetty-ssl.xml中找到的所有密码字段中的"OBF:" .请注意,像这样模糊的密码很难为人类阅读,但很容易以编程方式未被删除.它只是阻止开发人员在编辑文件时知道密码.应正确保护所有配置文件,并尽可能限制其访问.
编辑{jetty} /start.ini并取消注释#etc / jetty-ssl.xml行(只需删除#).
开始码头:
java -jar start.jar
Run Code Online (Sandbox Code Playgroud)
现在联系您的服务器: https://localhost:8443
完成!
请注意,此答案是使用jetty启用SSL的快速方法.为了确保生产安全,您必须阅读更多有关该主题的内容.
bek*_*kce 24
在获得更多密钥库经验后更新答案.我向您保证,此解决方案可与中间证书完美配合(2015年7月29日).
注意:PEM格式表示可读文件,证书以---BEGIN CERTIFICATE---字符开头,私钥以-----BEGIN PRIVATE KEY-----行开头.
这是一个简单的一步一步指南.从空目录开始.
如果您有私钥(PEM编码.key),请
跳至步骤2.如果您有证书签名请求(PEM编码.csr),请
跳至步骤3.如果您有证书(PEM编码.crt或.pem),请跳至步骤4
准备(无密码)私钥.
openssl genrsa -des3 -passout pass:1 -out domain.pass.key 2048
openssl rsa -passin pass:1 -in domain.pass.key -out domain.key
rm domain.pass.key
Run Code Online (Sandbox Code Playgroud)准备证书签名请求(CSR).我们将使用我们的密钥生成这个.询问时输入相关信息.注意使用-sha256,没有它,现代浏览器将生成警告.
openssl req -key domain.key -sha256 -new -out domain.csr
Run Code Online (Sandbox Code Playgroud)准备证书.选一个:
a)自己签名
openssl x509 -req -days 3650 -in domain.csr -signkey domain.key -out domain.crt
Run Code Online (Sandbox Code Playgroud)
b)将其发送给权威机构
您的SSL提供商将以PEM格式为您提供证书及其中间证书.
添加到信任链并以PKCS12格式打包.为方便起见,第一个命令设置密钥库密码(否则您需要输入密码十几次).为安全设置不同的密码.
export PASS=LW33Lk714l9l8Iv
Run Code Online (Sandbox Code Playgroud)
选一个:
a)自签名证书(无需中间证书)
openssl pkcs12 -export -in domain.crt -inkey domain.key -out domain.p12 -name domain -passout pass:$PASS
keytool -importkeystore -deststorepass $PASS -destkeypass $PASS -destkeystore domain.keystore -srckeystore domain.p12 -srcstoretype PKCS12 -srcstorepass $PASS -alias domain
Run Code Online (Sandbox Code Playgroud)
b)需要包含中间证书
下载中间证书并将它们连接到一个文件中.订单应该是sub to root.
cat sub.class1.server.ca.pem ca.pem > ca_chain.pem
Run Code Online (Sandbox Code Playgroud)
-caname为链文件中的每个中间证书使用一个参数,分别与它们放入链文件的顺序相对应.
openssl pkcs12 -export -in domain.crt -inkey domain.key -out domain.p12 -name domain -passout pass:$PASS -CAfile ca_chain.pem -caname sub1 -caname root -chain
keytool -importkeystore -deststorepass $PASS -destkeypass $PASS -destkeystore domain.keystore -srckeystore domain.p12 -srcstoretype PKCS12 -srcstorepass $PASS -alias domain
Run Code Online (Sandbox Code Playgroud)
重要说明:虽然keytool -list只列出一个条目而不是任何中间证书,但它可以完美地工作.
配置码头.
将domain.keystore文件移动到JETTY_HOME/etc /.
选一个:
a)您正在使用新start.ini风格配置(Jetty 8+):
jetty.keystore=etc/domain.keystore
jetty.truststore=etc/domain.keystore
jetty.keystore.password=LW33Lk714l9l8Iv
jetty.keymanager.password=LW33Lk714l9l8Iv
jetty.truststore.password=LW33Lk714l9l8Iv
Run Code Online (Sandbox Code Playgroud)
b)您正在使用带有.xml文件的旧样式配置(您应该升级到新样式!):
编辑JETTY_HOME/etc/jetty-ssl.xml文件并更改以下部分.替换密码部分以匹配您的密码.我们没有定义,KeyManagerPassword因为我们的密钥没有密码.
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="KeyStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
<Set name="KeyStorePassword">LW33Lk714l9l8Iv</Set>
<Set name="TrustStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
<Set name="TrustStorePassword">LW33Lk714l9l8Iv</Set>
</New>
<Call name="addConnector">...</Call>
</Configure>
Run Code Online (Sandbox Code Playgroud)
编辑start.ini文件以包含jetty-ssl.xml文件.
(重新)开始码头.
请注意,此密钥库文件也可以与其他容器(如Tomcat)一起使用.祝好运!
| 归档时间: |
|
| 查看次数: |
58945 次 |
| 最近记录: |