我可以使用-https
参数(https://docs.grails.org/latest/ref/Command%20Line/run-app.html)来通过HTTPS运行Grails 3.3.8应用程序。
grails run-app -https
可以在https://localhost:8444上访问应用程序(我使用自定义端口,默认为8443)。
我已经使用war
命令创建了可运行的grails package
文件,如https://docs.grails.org/latest/guide/deployment.html中所述。执行后
java -jar PATH_TO_APP\myapp-0.1.war
应用程序可以在http://localhost:8080上正确运行。
我不知道如何使用jar
参数来运行此-https
,因此它可以在https://localhost:8444上访问-与grails run-app -https
一样。我可以使可运行的jar/war
以HTTPS模式运行吗?或者,也许我可以默认将我的应用程序与-https
一起运行?
jar
参数执行--Dserver.port.https=8444
-无效。grails package -https
-我不知道我期望什么。我已将此应用程序配置为使用证书和自定义端口,但我认为这并不重要:
-> 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"
}
我重新导出了别名为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
应用程序将不会开始抛出错误DerInputStream.getLength(): lengthTag=109, too big
或-在注释掉key-store-type: PKCS12
:Alias name [tomcat] does not identify a key entry
后开始错误。
答案 0 :(得分:0)
如果要使用以下选项生成密钥:
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的测试。
spring-boot提供了嵌入式的tomcat /容器,因此请查看其文档以获取更多信息/选项。