TABLE OF CONTENTS

  1. 1、生成自签名CA(Self-signed CA)来签发证书
  2. 2、生成凭证签发请求CSR(Certificate Signing Request)
  3. 4、使用Self-signed CA签发localhost证书
    1. (1)获得 Cert 所需的其它信息
    2. (2)使用 Self-signed CA 签发 localhost 证书
  4. SSL/TLS证书相关的一些概念

文章详细内容

1, java 9+ 自带 httpclient(我比较喜欢这种链式调用的,但是 java8 没有)

2, apache 原生 httpclient

3, 封装过的 apache httpclient

4, OkHttp

5, Feign

6, RestTemplate

7, Retrofit

jsoup
webclient
RxJava
EasyOKHttp
Unirest
okhttp+retrofit+rxjava

请求和资源的转发是指在一个过滤器中,通过调用 RequestDispatcher 的 forward 方法将请求和响应传递给其他资源(例如,另一个 Servlet 或 JSP 页面)。这个转发的过程可能导致过滤器链的其他过滤器再次被调用,从而可能引起一些逻辑的多次执行。继承 OncePerRequestFilter 主要是为了应对过滤器链中的多次调用问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ExampleFilter extends OncePerRequestFilter {

@Override
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {

// 在这里添加你的自定义逻辑

// 执行请求和资源的转发
RequestDispatcher dispatcher = request.getRequestDispatcher("/someResource");
dispatcher.forward(request, response);

// 这里的逻辑将不会被重复执行
}
}

OpenSSL生成自签名证书

1、生成自签名CA(Self-signed CA)来签发证书

更新了openssh,安装Java环境(确保JDK中的keytool可用)后,使用这个虚拟机作为自签名CA来签发Cert

1
openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt

2、生成凭证签发请求CSR(Certificate Signing Request)

站点在向全文机构申请证书前准备的自己的资料(包含公钥但不应当包含私钥)。CA基于CSR签发证书(Cert) 。

1
openssl req -new -newkey rsa:4096 -keyout localhost.key -out localhost.csr

4、使用Self-signed CA签发localhost证书

(1)获得 Cert 所需的其它信息

1
2
3
4
5
6
7
8
cat > localhost.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.2.99

EOF

(2)使用 Self-signed CA 签发 localhost 证书

1
2
openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in localhost.csr -out localhost.crt -days 365 -CAcreateserial -extfile localhost.ext

SSL/TLS证书相关的一些概念

KeyManager:管理本地密钥库中的密钥(私钥),用于配置SSL/TLS握手中的客户端证书,使其能够进行双向SSL/TLS认证。
keyPassword:访问客户端证书的私钥的密码。通常通过非对称加密算法生成密钥对,为了保护私钥,通常会设置一个密码。
KeyStore:用于存储密钥和证书的容器,既可以包含客户端证书和私钥(由KeyManager使用),也可以包含信任的服务器证书(由TrustManager使用)。
TrustManager:配置信任的证书,用于验证服务器的身份。
TrustStrategy:一个策略接口,用于定义是否信任远程服务器的证书。可以自定义信任策略,例如接受所有证书、仅接受特定颁发机构的证书等

声明:本站所有文章均为原创或翻译,遵循署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,如需转载请确保您对该协议有足够了解,并附上作者名 (Tsukasa) 及原文地址