最近,有个内部服务需要使用公网上,担心被暴力刷API破解。
正好看到有个双向证书认证的方案,挺符合需求,踩了不少坑,简单记录下
生成证书
info:仅需要生成自签名客户端证书即可,服务端证书就用免费的在线申请的即可,不会有信任问题
可以参考微软官方文档:
生成自签名客户端证书
这里我就用openssl,来生成客户端证书
最近,有个内部服务需要使用公网上,担心被暴力刷API破解。
正好看到有个双向证书认证的方案,挺符合需求,踩了不少坑,简单记录下
可以参考微软官方文档:
这里我就用openssl,来生成客户端证书
HTTP 使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
HTTP 请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP1.0 定义了三种请求方法:GET
,POST
和HEAD
方法。
HTTP1.1 新增了五种请求方法:OPTIONS
,PUT
,DELETE
,TRACE
和CONNECT
方法。
GET
:请求指定的页面信息,并返回实体主体。HEAD
:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头POST
:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。PUT
:从客户端向服务器传送的数据取代指定的文档的内容。DELETE
:请求服务器删除指定的页面。CONNECT
:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS
:允许客户端查看服务器的性能。TRACE
:回显服务器收到的请求,主要用于测试或诊断。下面是在Nginx配置网站HTTPS(ssl)的参数
请酌情修改使用。
注意:TLS 1.1 协议预计将2020年3月份正式“退役”,详情点击 这里 。
server
{
#监听443端口、ssl、http2
listen 443 ssl http2 ;
#启用ssl
ssl on;
#证书配置
ssl_certificate /idzd.top.pem;
ssl_certificate_key /idzd.top.pem;
#支持的协议
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#支持的加密套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
ssl_prefer_server_ciphers on;
#设置储存SSL会话的缓存类型和大小
ssl_session_cache shared:SSL:10m;
#客户端能够反复使用储存在缓存中的会话参数时间
ssl_session_timeout 10m;
}