如何使用 AES-256 在 Spring Boot 上设置 SSL (TLS) / HTTPS?

Posted

技术标签:

【中文标题】如何使用 AES-256 在 Spring Boot 上设置 SSL (TLS) / HTTPS?【英文标题】:How to set up SSL (TLS) / HTTPS on Spring Boot using AES-256? 【发布时间】:2015-08-04 22:36:01 【问题描述】:

我使用 RSA (How to configure SSL / HTTPS on Spring?) 在我的 Spring Boot 服务器上设置了 SSL,方法如下 their guide:

使用keytool -genkey -alias <alias> -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 创建了一个新的密钥库和密钥

将这些行放在我的 application.properties 文件中:

server.port: 8443 server.ssl.key-store: classpath:keystore.p12 server.ssl.key-store-password: <keystore password> server.ssl.key-password = <key password> server.ssl.keyStoreType: PKCS12 server.ssl.keyAlias: <alias>

像魅力一样工作。但是,当我通过运行keytool -genseckey -keystore keystore.jck -storetype JCEKS -storepass &lt;store pass&gt; -keyalg AES -keysize 256 -alias &lt;alias&gt; -keypass &lt;key pass&gt; 生成 AES 256 密钥并将 .properties 文件更改为新的密钥库/密钥值时,对服务器的每个请求都会生成0 EMPTY RESPONSE。我应该遵循哪些步骤才能成功配置它?

【问题讨论】:

你遇到了什么错误(如果有的话)? 刚刚编辑了我的问题。对不起!应用程序本身不会抛出异常,但每个请求都会导致0 EMPTY RESPONSE 您能否编辑您的问题以描述您所采取的步骤,而不仅仅是指向指南?我们无法知道您是否真的正确地遵循了指南。 @Kenster 抱歉,我刚刚更新了它。我认为我正确地遵循了指南,因为它可以工作,而不是使用我需要的那种密码:/ 【参考方案1】:

知道了。解决了。密钥算法与您要使用的密码(在我的情况下为 AES 256)几乎没有关系。让它与常规的 RSA、PKCS12 密钥一起工作。

然后,在 application.properties 中设置下一个属性:

server.ssl.ciphers=ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA
server.ssl.protocol=TLS

【讨论】:

【参考方案2】:

我有同样的问题。 将 JDK 1.6 更改为 1.8 有效。

【讨论】:

【参考方案3】:

我在使用 Spring Boot 和嵌入式 Tomcat 时遇到问题,因为我的密钥没有“tomcat”别名... 使用“tomcat”别名创建密钥解决了问题(嵌入式 Tomcat 没有获取其他密钥?)

【讨论】:

以上是关于如何使用 AES-256 在 Spring Boot 上设置 SSL (TLS) / HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security Saml 2.0 是不是支持断言级别加密和 AES-256 作为加密算法?

如何在 Android 中使用自己的密钥进行 AES-256 加密?

我如何使用 php 生成 AES-256 对称密钥

在目标 c 中,如何使用 md5 作为密钥进行 AES256 加密?

如何在 PHP 中进行 AES256 解密?

带有 BCrypt 哈希的 AES 256。如何从数据库中检查用户密码? [复制]