これを機能させるために、ギアを別のアプローチにシフトしました。この質問は、次の記事の指示に従って解決できます: Embedded Tomcat enable SSL
-https オプションとは異なり、このアプローチを使用すると、独自のキーストア ファイルを作成してどこかに保存する必要があります。grails によって生成されたキーストアを使用することもできます。これはデフォルトでビルド ディレクトリにあります。ただし、ビルド ディレクトリを消去できるため、その場所をより恒久的な場所に移動する必要があります。注: bootRun で渡された systemProperties を確認することで、キーストアのパスワードとデータを取得できます。
bootRun {
print systemProperties
}
私の出力は次のとおりです。
endpoints.shutdown.enabled:true, env:development, full.stacktrace:false, grails.env:development, grails.full.stacktrace:false, info.app.grailsVersion:3.1.2, info.app.name:coolio, info.app.version:0.1, interactive.mode.enabled:true, run.active:true, server.port:8443, server.ssl.key-password:123456, server.ssl.key-store:./build/ssl/keystore, server.ssl.key-store-password:123456, verbose:false
私の構成には、作成者が示した正確な属性がなく、必要な部分のみが混在していました。
private static Connector getSslConnector() {
def dir = System.getProperty("user.dir")
Connector connector = new Connector();
connector.setPort(8443);
connector.setSecure(true);
connector.setScheme("https");
connector.setAttribute("keystorePass", "coolio");
connector.setAttribute("keystoreFile", dir + "/.keystore");
connector.setAttribute("clientAuth", "false");
connector.setAttribute("protocol", "HTTP/1.1");
connector.setAttribute("sslProtocol", "TLS");
connector.setAttribute("maxThreads", "200");
connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");
connector.setAttribute("SSLEnabled", true);
return connector;
}
元の投稿では protocol 属性が次のように設定されていることに注意してください。
connector.setAttribute("protocol", "org.apache.coyote.http11.Http11AprProtocol");
そして、属性を次のように設定します。
connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");
それ以外は、前の記事で示したように、コネクタを tomcat サービスに接続すると、すべてが意図したとおりに機能するはずです。http と https の両方が存在する状態で run-app を実行できるようになりました。