首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jetty 9:设置最基本的SSL / https

jetty 9:设置最基本的SSL / https
EN

Stack Overflow用户
提问于 2013-10-07 23:38:21
回答 2查看 10.4K关注 0票数 6

注意:如果你想看这个演示应用的行为,只需转到www.collaborativepowernowinternational.us。在这里,选择testssl.PersonController,您可以创建一个人。然后,编辑指定SSL通道的人,这将给出一个重定向循环.

似乎Jetty 9将有更多的配置项进入start.ini文件,我有9.05版本。

为了测试最基本的SSL/https,我在start.ini中取消了以下行的注释:

代码语言:javascript
复制
#===========================================================
# SSL Context
# Create the keystore and trust store for use by
# HTTPS and SPDY
#-----------------------------------------------------------
jetty.keystore=etc/keystore
jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g
jetty.truststore=etc/keystore
jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
jetty.secure.port=8443
etc/jetty-ssl.xml

#===========================================================
# HTTPS Connector
# Must be used with jetty-ssl.xml
#-----------------------------------------------------------
jetty.https.port=8443
etc/jetty-https.xml

没有其他Jetty配置更改。然后,我构建了最基本的Grails应用程序(有一个Person类),其中设置了某些控制器操作以确保安全,它在我的开发机器上运行良好,使用了Jetty版本( Grails包含的旧版本)。这只需通过包含security,然后将以下行添加到配置文件中即可完成:

代码语言:javascript
复制
grails.plugins.springsecurity.secureChannel.definition = [
  '/person/list': 'REQUIRES_INSECURE_CHANNEL',
  '/person/delete/**': 'REQUIRES_SECURE_CHANNEL',
  '/person/edit/**': 'REQUIRES_SECURE_CHANNEL',
  '/person/show': 'REQUIRES_INSECURE_CHANNEL'
]

grails.plugins.springsecurity.portMapper.httpPort=80
grails.plugins.springsecurity.portMapper.httpsPort=443

当我访问person/edit时,我在浏览器中得到一个重定向循环(在专用的CentOs 6机器上使用部署的WAR文件到Jetty 9)。这是使用Jetty 9附带的提供的keystore,只是取消了start.ini中的行注释来使用它。

我正在阅读的主要Jetty配置页面是这里。我不清楚的是,更新start.ini文件是否足够?如果不是,如何在前面的链接中描述的jetty-https.xml中添加行,即行:

代码语言:javascript
复制
 <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="KeyStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
    <Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
    <Set name="TrustStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
 </New>

不知道如何添加它们,但它们似乎也与上面的start.ini文件行重复。

你能帮我运行最基本的Jetty吗?非常感谢。

如果不熟悉Grails,可以简单地下载它,然后创建一个域类--这里有一个命令行选项。然后给它字段String firstName,String lastName。然后有一些命令来生成控制器和视图--这都是完全自动的。然后添加一个插件,弹簧安全核心。在本文档的第16/17章中,正如我所展示的,什么时候列出哪些控制器操作是安全的,比如person/edit。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-11 01:39:19

实际上,这里已经足够让Jetty部分使用我们在Jetty9.0.6发行版中提供的默认试用密钥存储库了。

简单地说,上面的内容就足以使SSL在Jetty中工作。我下载了9.0.6发行版,并取消了这些行的注释,它就能工作了。好的,我必须进入start.d/demo.ini文件,并使用etc/jetty-ssl.xml和etc/jetty-https.xml删除最后两行,因为它们将被运行twice...but i偏离。

如果启动Jetty,您可以导航到https://localhost:8443,它会抱怨自己是不受信任的证书,然后加载jetty分发页面。

基于此,我想说,这可能是某种grails配置问题,遗憾的是,我也不知道答案。

票数 5
EN

Stack Overflow用户

发布于 2015-12-25 21:39:10

从Jetty9.1开始,情况发生了变化,您必须遵循这里中的说明,才能使事情看起来正确,每个Jetty开发人员。此外,您不应该更改/删除/编辑${jetty.home}目录中的任何内容。

(a)将环境变量$JETTY_HOME设置为指向安装jetty包的位置,比如/opt/jetty/

(b)创建一个新目录/tmp/myJettyApp,将其指向您的环境中的$JETTY_BASE

(c) cd到$JETTY_BASE

(d)遵循这里中的指示

代码语言:javascript
复制
/home/sonny $ cd $JETTY_BASE
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2

(e)如果你愿意,设置你的港口:

代码语言:javascript
复制
/home/sonny $ cd $JETTY_BASE;
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444

(f)现在,运营码头:

代码语言:javascript
复制
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar

您将看到HTTPS在端口8444上运行。现在,如果您想让jetty侦听传统的HTTPS端口,您必须使用sudo来运行:

代码语言:javascript
复制
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=443
/tmp/myJettyApp/ $ sudo java -jar $JETTY_HOME/start.jar

注意,这已经自动完成了自签名证书等操作。

现在,如果您想要生成您自己的自签名证书(例如,因为您想将validity修改为任意大小的值,这取决于您的需要),请按照这里中的说明,使用keytool生成一个新的自签名证书,然后将其放在$JETTY_BASE/etc/中,并分别修改jetty.sslContext.keyStorePasswordjetty.sslContext.keyManagerPassword$JETTY_BASE/start.d/ssl.ini。顺便说一下,对于最后两个ssl.ini密码,您可以使用运行keytool时使用的模糊纯文本密码,也可以使用纯文本密码。如果您想混淆它们,请运行{jetty.home} $ java -cp lib/jetty-util-9.3.6.v20151106.jar org.eclipse.jetty.util.security.Password "MyInterestingAndAwesomePassword"

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19236628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档