7

是否有任何示例/教程可以使用 quarkus.io 构建和配置 TLS 安全的 restful 服务?

不幸的是,我在 quarkus 文档中也找不到,这里没有。

4

2 回答 2

12

谢谢先生。Guillaume Smet,我找到了解决方案。这是“使用 Quarkus 和 SSL 指南在 5 分钟内从零到你好”。这是由 quarkus undertow 插件完成的。您还需要安装文本编辑器、jdk 1.8+ 和 maven。

首先,创建项目。

mkdir restls
cd restls
mvn io.quarkus:quarkus-maven-plugin:create -DprojectGroupId=org.acme -DprojectArtifactId=restls -DclassName="org.acme.HelloResource" -Dpath="/hello" -Dextensions="undertow"

使用任何编辑器打开您的应用程序配置文件src/main/resources/application.properties并添加行:

quarkus.http.port=80
quarkus.http.ssl-port=443
quarkus.http.ssl.certificate.key-store-file=keystore.jks

创建包含自签名证书的密钥库(回答所有问题并指定密码,即“密码”):

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 365 -keysize 2048

该文件keystore.jks必须在src/main/resources/文件夹中。

构建项目:

mvnw clean package quarkus:build

现在试试看:

java -jar target/restls-1.0-SNAPSHOT-runner.jar

导航到 https://localhost/hello 并允许您的浏览器信任证书。就这样。

您可以像这样在调用时覆盖选项:

java -Dquarkus.http.ssl.certificate.key-store-file=/path-to-keystore/keystore-name.jks -jar target/restls-1.0-SNAPSHOT-runner.jar

最后,这是相关的选项列表:

quarkus.http.ssl.certificate.file -- The file path to a server certificate or certificate chain in PEM format.

quarkus.http.ssl.certificate.key-file -- The file path to the corresponding certificate private key file in PEM format.

quarkus.http.ssl.certificate.key-store-file -- An optional key store which holds the certificate information instead of specifying separate files.

quarkus.http.ssl.certificate.key-store-file-type -- An optional parameter to specify type of the key store file. If not given, the type is automatically detected based on the file name.

您可以指定 PEM 格式的证书 + 密钥文件或密钥库。

于 2019-04-12T08:25:48.537 回答
9

我们的 Undertow 扩展确实支持它,但不幸的是,没有记录。

您可以定义如下内容:

quarkus.http.ssl.certificate.file=...
quarkus.http.ssl.certificate.key-file=...
...

在您的 application.properties 中。

配置入口点是ServerSslConfig(参见https://github.com/quarkusio/quarkus/blob/master/core/runtime/src/main/java/io/quarkus/runtime/configuration/ssl/ServerSslConfig.java#L41)。然后,您添加带有点的嵌套属性并将驼峰式大小写转换为破折号。

如果您想构建本机可执行文件,则很有可能您也必须添加quarkus.ssl.native=true

如果您有反馈或想要为此提供指南,请随时加入我们的 Zulip 或在 GitHub 上打开问题/PR。

于 2019-04-09T11:38:31.157 回答