Запустите Grails 3 автономную банку / войну с HTTPS - PullRequest
0 голосов
/ 26 октября 2018

Я могу запустить свое приложение Grails 3.3.8 с HTTPS, используя аргумент -https (https://docs.grails.org/latest/ref/Command%20Line/run-app.html).

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 - я не знаю, чего я ожидал.
  • Плагин 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
  • Grails: 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, использующая подсистему Windows для Linux)

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

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

1 Ответ

0 голосов
/ 27 октября 2018

Если вы сгенерируете ключ с помощью следующих опций:

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 / container предоставляется spring-boot, так что посмотрите их документы для более подробной информации.информация / опции.

https://docs.spring.io/spring-boot/docs/1.5.17.RELEASE/reference/html/howto-embedded-servlet-containers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...