是否有使用quarkus.io构建和配置TLS安全的RESTful服务的示例/教程?
不幸的是,我在quarkus文档中找不到一个,在这里找不到。
答案 0 :(得分:2)
我们的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。
答案 1 :(得分:2)
谢谢先生。 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
创建包含自签名证书的密钥库(回答所有问题并仅指定密码“ password”):
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 365 -keysize 2048
构建项目:
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格式的证书+密钥文件或密钥库。