我可以使用-https
参数使用HTTPS运行Grails 3.3.8应用程序(https://docs.grails.org/latest/ref/Command%20Line/run-app.html(.
grails run-app -https
应用程序可在上访问https://localhost:8444(我使用自定义端口,8443是默认端口(。
我使用grails package
命令创建了一个可运行的war
文件,如中所述https://docs.grails.org/latest/guide/deployment.html.执行后
java -jar PATH_TO_APPmyapp-0.1.war
应用程序在上正确运行http://localhost:8080.
问题
我不知道如何用-https
参数运行这个jar
,所以它可以在https://localhost:8444-与grails run-app -https
一样。我可以让可运行的jar/war
在HTTPS模式下运行吗?或者我可以默认我的应用程序使用-https
运行?
我尝试过的:
- 使用
--Dserver.port.https=8444
参数执行jar
-无效 - 执行
grails package -https
-我不知道我期望的是什么 - 插件https://grails.org/plugin/standalone,这看起来可能会有所帮助——不幸的是,Grails 3无法使用
其他信息
我已经将这个应用程序配置为使用证书和自定义端口,但我认为这并不重要
->build.gradle
。
bootRun {
jvmArgs("-Dspring.output.ansi.enabled=always")
addResources = true
String springProfilesActive = "spring.profiles.active"
systemProperty springProfilesActive, System.getProperty(springProfilesActive)
systemProperty "server.port", "8444"
systemProperty "server.ssl.enabled", "true"
systemProperty "server.ssl.key-store", System.getProperty("user.home") + "/certificates/cert.p12"
systemProperty "server.ssl.key-store-password", "secret"
systemProperty "server.ssl.key-password", "secret"
}
规格:
- 系统:Windows 10
- JDK:1.8.0_191-b12
- 圣杯:3.3.8
编辑:我尝试使用@erichelgeson答案
我使用别名tomcat
:重新导出了我的证书
openssl pkcs12 -export -out ia.p12 -inkey ia.key -in ia.crt -chain -CAfile ca.crt -name tomcat
,
并使用keystore
命令导入(我在Windows上使用Linux的Windows子系统(
/mnt/c/Program Files/Java/jdk1.8.0_191/bin/keytool.exe -importkeystore -srckeystore cert.p12 -srcstoretype pkcs12 -srcalias tomcat -destkeystore keystore.jks -deststoretype jks -deststorepass secret -destalias tomcat
,
然后在密钥库警告后将其迁移到PKCS12
/mnt/c/Program Files/Java/jdk1.8.0_191/bin/keytool.exe -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12
。
我将keystore.jks
放在应用程序文件夹的根目录中(我也尝试了/src/main/resources
(,并通过添加修改了我的application.yml
文件
server:
port: 8444
ssl:
key-password: secret
key-store-password: secret
key-store: keystore.jks
key-store-type: PKCS12
key-alias: tomcat
在注释掉key-store-type: PKCS12
:Alias name [tomcat] does not identify a key entry
之后,应用程序不会开始抛出错误DerInputStream.getLength(): lengthTag=109, too big
或-。
如果您要使用以下选项生成密钥:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365
application.yml/groovy:
server:
port: 8444
ssl:
key-store: keystore.p12
key-store-password: whatYouSetWhenGeneratingKeytool
keyStoreType: PKCS12
keyAlias: tomcat
你的应用程序将以ssl开始——尽管输出会显示http,但实际上是https:
$ ./gradlew assemble
$ java -jar build/libs/ssltest-0.1.jar
Grails application running at http://localhost:8444 in environment: production
使用Grails 3.3.8进行测试。
嵌入式tomcat/容器是由spring-boot提供的,所以请查看他们的文档以了解更多信息/选项。
https://docs.spring.io/spring-boot/docs/1.5.17.RELEASE/reference/html/howto-embedded-servlet-containers.html