springcloudt https证书配置

#王者杯·14天创作挑战营·第2期#

现在大多数网站都用的是https,配置证书变得很重要。而且,要使用http2,必须启用https,而且是微服务之间的调用必须使用https。http2的好处这里不多说。

证书格式

先对各种常用的证书格式作一个简单说明。

DER\CER

该格式是二进制文件内容,Java 和 Windows 服务器偏向于使用这种编码格式。
只保存证书,不保存私钥。
OpenSSL 查看

openssl x509 -in certificate.der -inform der -text -noout

转换为 PEM:

openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

PEM

一般是文本格式,可保存证书,可保存私钥。
Privacy Enhanced Mail,一般为文本格式,以 -----BEGIN… 开头,以 -----END… 结尾。中间的内容是 BASE64 编码。这种格式可以保存证书和私钥,有时我们也把PEM 格式的私钥的后缀改为 .key 以区别证书与私钥。具体你可以看文件的内容。

如果存在——BEGIN CERTIFICATE——,则说明这是一个证书文件。
如果存在—–BEGIN RSA PRIVATE KEY—–,则说明这是一个私钥文件。

这种格式常用于 Apache 和 Nginx 服务器。
OpenSSL 查看:

openssl x509 -in certificate.pem -text -noout

转换为 DER:

openssl x509 -in cert.crt -outform der -out cert.der

上面后缀是.crt, 看下节

CRT

Certificate 的简称,有可能是 PEM 编码格式,也有可能是 DER 编码格式。如何查看请参考前两种格式。

PFX、P12

Predecessor of PKCS#12,这种格式是二进制格式,且证书和私钥存在一个 PFX 文件中。一般用于 Windows 上的 IIS 服务器。改格式的文件一般会有一个密码用于保证私钥的安全。

OpenSSL 查看:

openssl pkcs12 -in for-iis.pfx

转换为 PEM:

openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes

JKS

Java Key Storage,很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。

生成证书

这里主要是生成java专用的jks证书,用于配置springcloud微服务。
详见:https://blog.csdn.net/xgw1010/article/details/137242310

微服务配置证书

pring:
  ssl:
    bundle:
      jks:
        server:
          key:
            alias: "server"
          keystore:
            location: "classpath:server.p12"
            password: "secret"
            type: "PKCS12"
      pem:
        client:
          truststore:
            certificate: "classpath:client.crt"

server字段配置的是服务器证书。

client字段配置的是客户端信任证书,需要在httpclient 或webclient调用其它服务时设置。
这里的client.crt就是上节中的根证书,不包括私钥。
代码如下:

@Service
public class MyService {

    private final WebClient webClient;

    public MyService(WebClient.Builder webClientBuilder, WebClientSsl ssl) {
        this.webClient = webClientBuilder.baseUrl("https://example.org").apply(ssl.fromBundle("mybundle")).build();
    }

}

参考:https://spring.io/blog/2023/06/07/securing-spring-boot-applications-with-ssl

网关配置信任证书

网关会转发请求到后端的服务,也需要配置信任的ssl证书,否则会报错:

avax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

application.yml:

spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          trustedX509Certificates:
          - cert1.pem
          - cert2.pem

这里也是根证书。

参考:https://docs.spring.io/spring-cloud-gateway/reference/spring-cloud-gateway-server-webflux/tls-and-ssl.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiegwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值