Nginx配置客户端(浏览器)SSL证书认证简明教程(自签名证书)

本文介绍自签名的证书方式,与签名相关的文件包括:

  • cer/crt:证书文件,Linux习惯用crt作为后缀,Windows用cer作为后缀。
  • key:私钥文件
  • csr(Certificate Signing Request):证书签名请求

创建CA根证书

CA证书用于签署客户端证书。

sudo openssl genrsa -des3 -out ca.key 4096
sudo openssl req -new -x509 -days 365 -key ca.key -out ca.crt

创建的内容为:

  • ca.key:CA的密钥文件
  • ca.crt:CA证书文件

创建服务器证书

创建服务器的密钥文件和证书请求文件

sudo openssl genrsa -des3 -out server.key 1024
sudo openssl req -new -key server.key -out server.csr

使用CA签署服务器证书

sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

创建的文件为:

  • server.key:服务器密钥文件
  • server.csr:服务器证书签名请求,此证书用于向CA请求签署服务器证书。
  • server.crt:有CA根证书签署的服务器证书。

创建客户端证书

创建客户端的密钥文件和证书请求文件

sudo openssl genrsa -des3 -out client.key 1024
sudo openssl req -new -key client.key -out client.csr

使用CA签署客户端证书

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

转换CA证书为PEM格式

sudo openssl x509 -in ca.crt -out ca.pem -outform PEM

因为在nginx的ssl_client_certificate需要pem格式

转换客户端证书格式

转换为pkcs12格式

pkcs12格式会把客户端的密钥文件(key)和证书文件(crt)打包在一起,后缀为.p12。

sudo openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

pkcs12这种格式被大部分浏览器支持安装。

转换为PEM编码

sudo openssl pkcs12 -in client.p12 -out client.pem -clcerts

Nginx配置

相关配置如下:

server {
    listen        443;
    ssl on;
    server_name example.com;

    ssl_certificate      /etc/nginx/certs/server.crt;
    ssl_certificate_key  /etc/nginx/certs/server.key;
    ssl_client_certificate /etc/nginx/certs/ca.pem;
    ssl_verify_client on;#可以设为on,认证客户端

}

相关问题参考:https://majing.io/posts/10000002871167

版权声明:著作权归作者所有。

相关推荐

nginx配置Basic认证

最近在搭建kibana时,发现kibana是没有提供认证功能,所以想到给它加一个认证,最简单的就是basic auth认证。下面记录下nginx配置basic认证的过程。添加Basic Auth认证需要先创建密码文件,这里使用htpasswd。如果没有找到htpasswd命令,可以先安装httpd-tools。安装httpd-toolsyum install 

Java获取受信任的根证书列表的方法

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.InvalidAlgorithmParameterException; import java.security.KeyStore; import java.security.KeySt

Nginx配置WebSocket

Nginx配置WebSocketserver {     listen       80;     server_name  example.com;     location&

Angular CLI:集成Autoprefixer兼容多浏览器以及浏览器版本

Angular CLI使用Autoprefixer来兼容不同的浏览器以及多个浏览器版本,我们不需要做额外的工作来集成Autoprefixer。Autoprefixer内部依赖于Browserslist,根据Browserslist的配置决定兼容哪些浏览器或浏览器版本。如果我们对浏览器的兼容范围有自己的需求,可以设置Browserslist的配置。集成Browserslist配置到Angu

JavaScript检测浏览器支持的视频格式以及音频格式

不同的浏览器支持的视频/音频格式有所不同,为了在多个浏览器上兼容视频/音频的播放,需要使用JavaScript检测浏览器所支持的视频/音频格式。HTMLVideoElement和HTMLAudioElement继承于HTMLMediaElement,HTMLMediaElement的canPlayType()方法可以用来判断浏览器是否支持指定的多媒体格式。语法str = aud

页面调试禁用Chrome浏览器的缓存

在前端开发过程中,页面调试时常常需要清理浏览器的缓存,下面介绍两种禁用Chrome缓存的方法。方法一:1、F12打开开发这工具2、选中开发者工具的Network标签3、把Disable cache勾选上,如图注意:禁用Chrome的缓存只有在开发者工具打开时才起作用。方法二安装清理缓存的Chrome插件。可以试一下Cache Killer。