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
Grails jetty 9:设置最基本的SSL/https_Grails_Ssl_Jetty - Fatal编程技术网

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

Grails jetty 9:设置最基本的SSL/https,grails,ssl,jetty,Grails,Ssl,Jetty,注意:如果您想查看此演示应用程序的行为,请访问www.collaborativepowernowinternational.us。在这里,选择testssl.PersonController,您可以创建一个人。然后去编辑指定SSL通道的人员,这将产生重定向循环。 在Jetty 9中,似乎有更多的配置项进入了start.ini文件,我的版本是9.05 为了测试最基本的SSL/https,我在start.ini中取消注释以下行: #==================================

注意:如果您想查看此演示应用程序的行为,请访问www.collaborativepowernowinternational.us。在这里,选择testssl.PersonController,您可以创建一个人。然后去编辑指定SSL通道的人员,这将产生重定向循环。

在Jetty 9中,似乎有更多的配置项进入了start.ini文件,我的版本是9.05

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

#===========================================================
# 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
没有其他码头配置更改。然后,我构建了最基本的Grails应用程序(有一个Person类),我在其中设置了某些要保护的控制器操作,这在使用较旧的内置Jetty版本(Grails包括)的开发机器上运行良好。这只需包含spring security core,然后将以下行添加到配置文件中即可完成:

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机器上使用部署到Jetty 9的WAR文件)。这是使用Jetty 9附带的密钥库,只需取消start.ini中的行注释即可使用它

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

 <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>

/etc/密钥库
OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
OBF:1u2u1wml1z7s1z7a1wnl1u2g
/etc/密钥库
OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
不确定如何添加它们,但它们似乎与上面的start.ini文件行重复

你能帮我运行最基本的Jetty SSL吗?多谢



如果不熟悉Grails,可以简单地下载它,然后创建一个域类——这有一个命令行选项。然后给它指定stringfirstname和stringlastname字段。然后是生成控制器和视图的命令——这是完全自动的。然后添加了插件SpringSecurityCore。在本文档的第16/17章中,如我所示,当列出哪些控制器操作是安全的,例如person/edit时。

您实际上已经有足够的信息,可以使用Jetty 9.0.6发行版中提供的默认试用密钥库来处理此部分

上面的简介就足以让SSL在Jetty中工作。我下载了9.0.6发行版,并取消了这些行的注释,它就可以工作了。嗯,我必须进入start.d/demo.ini文件,删除带有etc/jetty-ssl.xml和etc/jetty-https.xml的最后两行,因为它们会运行两次……但我离题了

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


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

从Jetty 9.1开始,情况已经发生了变化,您必须按照中的说明进行操作,以确保每个Jetty开发人员都能看到正确的结果。此外,您不应该更改/删除/编辑
${jetty.home}
目录中的任何内容。以下是在Jetty 9.1+上实现基于自签名证书的SSL/HTTPS所需的操作:

(a) 设置环境变量
$JETTY\u HOME
以指向安装JETTY tar捆绑包的位置,例如
/opt/JETTY/

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

(c) cd至
$JETTY\u基地

(d) 请按照以下说明操作:

(e) 如果需要,请设置端口:

/home/sonny $ cd $JETTY_BASE;
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444
(f) 现在,运行jetty:

/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar
您将看到HTTPS正在端口8444处运行。现在,如果您想让jetty在传统的HTTPS端口中侦听,您必须使用sudo来运行:

/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=443
/tmp/myJettyApp/ $ sudo java -jar $JETTY_HOME/start.jar
请注意,这已经自动完成了自签名证书等

现在,如果您希望生成自己的自签名证书(例如,因为您希望根据需要将
有效性
修改为任意大小的值),请按照中的说明进行操作,使用
keytool
生成新的自签名证书,然后将其放入
$JETTY\u BASE/etc/
中,并分别修改
JETTY.sslContext.keystrepassword
JETTY.sslContext.keyManagerPassword的
$JETTY\u 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“MyInterestingandWesomePassword”


希望这对某人有所帮助。

谢谢!事实证明,Grails允许一种方法来指定安全通道,该通道通过插件在较旧Jetty版本的“桌面”上工作,但在较新的Jetty版本(我也正在部署)中不工作。这个问题,再加上如何打开SSL以及如何在Jetty 9.05/9.06(通过start.ini)和更新的Jetty 9.10版本之间指定证书的问题,让我很恼火——无法让任何东西正常工作。感谢您澄清了要使用的正确版本——即目前的9.06,随着9.10配置机制的最终确定和相关文档的更新。
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=443
/tmp/myJettyApp/ $ sudo java -jar $JETTY_HOME/start.jar