java - 将 aws api 网关客户端证书与 spring boot mvc rest 控制器一起使用的确切步骤是什么?
问题描述
我开发了一个基本的Spring Boot 2.0 / Java 8应用程序,我想用AWS API Gateway 证书来保护它,并确保只有 AWS API Gateway 可以调用这个后端服务。
这是我遵循的步骤
- 我在 AWS API Gateway 中生成了一个客户端证书
- 我在我的 API 阶段选择了客户端证书并进行了验证
- 我单击复制并将客户端证书的内容粘贴到
certificate.pem
- 我使用将 PEM 证书转换为 DER 编码证书
openssl x509 -outform der -in certificate.pem -out certificate.der
- 我使用 keytool 将 DER 编码证书导入到 JKS 密钥库中
keytool -import -alias tomcat -keystore keystore.jks -file certificate.der -storetype JKS
,输入密码两次,keytool 显示此消息Certificate was added to keystore
keystore.jks
我搬到src/main/resources/
我编辑
application.properties
添加了这些设置- server.ssl.key-store-type=JKS
- server.ssl.key-store=classpath:keystore.jks
- server.ssl.key-store-password=密码
- server.ssl.key-alias=tomcat
当我启动 Spring 应用程序时,此错误消息是Alias name [tomcat] does not identify a key entry
在 stackoverflow 上阅读相同的错误消息,我知道我肯定错过了这里的私钥,我需要将它添加到密钥库中。列出的条目keystore.jks
显示 tomcat 别名为trustedcertentry 而不是privatekeyentry。
有人可以指导我完成整个过程或解释我在这里缺少什么以将AWS API Gateway 客户端证书与 Spring Boot 应用程序一起使用吗?
非常感谢
解决方案
推荐阅读
- javascript - 当我尝试推送 reatlitme 数据库时,firebase react native 抛出 [ReferenceError: Property 'Proxy' doesn't exist]
- javascript - 使用 browserify 后无法在客户端使用猫鼬模式
- r - What is an efficient way to do this in R?
- firebase - Flutter Cloud Firestore isLessThan 过滤器不使用两个 .where() 语句
- python - python函数条件返回
- airflow - 无法在 Apache 气流中使用导入和使用 MySqlOperator
- reactjs - 下一个 JS 路由器不会在异步功能中更改页面
- python - 包含特殊字符的参数化 python 多行字符串
- java - 如果 i=0(在嵌套的 for 循环中), j=i+1 和 j=1 有什么区别?
- ios - 创建可选的@StateObject