Nginx配置双向认证以及证书文件的制作流程

Nginx配置双向认证以及证书文件的制作流程

ssl协议

  • ssl协议在传输过程中使用了对称加密和非对称加密的方式

  • 对称加密使用的是相同的秘钥进行加密,有加密速度快的特点

  • 非对称加密使用的则是秘钥对(公钥和私钥)的方式进行加密,相对对称加密的单秘钥拥有更加安全的特点,但是缺点就是加密速度慢

证书格式之间的问题

  • CRT:crt意为certificate的简略写法,也就是证书的意思

  • KEY:key格式的文件为秘钥,也可以有PEM和DER格式的,都为秘钥文件

  • CSR:csr文件为证书签名请求文件,该文件可以理解为公钥,同时生成该文件的时候需要定义国家组织机构和域名等信息

一 .制作CA证书

1.生成CA的私钥

openssl genrsa -out ca.key 4096

生成ca.key

2.通过CA私钥来生成CA证书

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

生成CA证书文件ca.crt

其中需要填写一些信息,国家信息,省份,公司或机构名称,常用名称img

二 .制作服务端证书

1.生成服务端私钥

openssl genrsa -out server.key 4096

2.生成服务端的证书请求文件(CSR)

openssl req -new -key server.key -out server.csr

其中也需要添加一些组织机构信息,这里需要注意的是,这里的Common Name如果服务器使用的是域名访问就一定要填写域名,如果是ip就要写对应的ip地址,其余的信息可以为空img

3.使用CA签发的证书和私钥生成服务端证书文件(CRT)

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

–ps 如果不加days参数,默认证书的有效期为一个月

–这样服务端所需的相关文件就生成完毕了

三 .制作客户端证书

1.生成客户端秘钥

openssl genrsa -out client.key 4096

2.生成客户端的请求文件

openssl req -new -key client.key -out client.csr

同理,这里面也需要配置一些参数,这里的组织和Common Name可以根据客户端来自行设置img

3.使用CA证书和秘钥签名生成客户端证书

openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365

完成上面的步骤之后,我们当前文件夹下就会有这些文件,接下来就要对这些文件进行配置img

四.服务端证书配置

由于要配置ssl,所以nginx需要加载https的相关模块

nginx文件配置

server {
        listen 5443 ssl;   #端口号,改成需要的
        server_name 114.96.103.22;   # 对外暴露的服务地址
        ssl_certificate    /opt/nginx/keys/server.crt;    #     crt文件
        ssl_certificate_key    /opt/nginx/keys/server.key; # key文件
        ssl_protocols    TLSv1.2 TLSv1;
        ssl_verify_client      on; #开启双向认证
        ssl_verify_depth 2;
         ssl_client_certificate /opt/nginx/keys/ca.crt;
        location /test {
                default_type text/html;
            return 200 "success"; #  //要反向代理的服务地址
        }
}
  • 这里需要注意的是双向认证的配置项,如果要开启的话则还必须要配置ca.crt 也就是ca证书,否则无法启用

  • 同时在开启双向认证后,在客户端不携带证书访问服务端时就会报400错误,如果不开启双向认证,客户端可以正常访问服务端,只是会出现证书不受信任的安全提示

五.客户端证书配置和请求配置

  • 当配置了双向认证之后,客户端访问需要携带证书所以客户端需要进行配置

1.当客户端为命令行时

  • 当不携带证书访问时为400img

  • 携带证书访问,可以看到响应为200img

  • 当为单向认证的时候可以通过curl -v -k https://xxx.xxxx.xxx/xx 命令忽略证书请求

2.当客户端为nginx时

  • 当我们通过nginx去访问另一个双向认证的地址时候就需要在nginx的请求中携带证书,具体配置如下img

  • 然后通过本地的端口去访问服务器,可以发现也是可以访问成功的img

3.客户端为浏览器时

  • 最后就是通过浏览器来访问我们的服务端了,浏览器访问首先需要对客户端证书进行一下转换,将key和crt转换为p12格式的证书,可供浏览器直接安装

  • openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12img

  • 当进行证书转化的时候会提示输入客户端的密码,这里可以不输入,这样在导入时候也可以直接回车不进行输入。如果在这里输入了密码,在导入的时候也要输入对应的密码才能进行导入img

  • 导入之后即可查看证书img

  • 测试访问服务端,一切okimg

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值