Nginx+SSL实现双向认证的示例代码

首先创建一个目录

cd /etc/nginx
mkdir ssl
cd ssl

CA与自签名

制作CA私钥

openssl genrsa -out ca.key 2048

制作 CA 根证书(公钥)

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

注意:

1、Common Name 可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧

服务器端证书

制作服务器端私钥:

openssl genrsa -out server.pem 1024
openssl rsa -in server.pem -out server.key

生成签发请求:

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

注意:

1、Common Name 得填写为访问服务时的域名,这里我们用 usb.dev 下面 NGINX 配置会用到
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)

用CA签发

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

客户端证书

与服务端证书类似

注意:

1、Common Name可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)

至此需要的证书都弄好了,我们可以开始配置 NGINX 了。

Nginx配置

server {
    listen 443;
    server_name usb.dev;

    index index.html;

    root /data/test/;

    ssl on;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client on;
}

请求验证

验证过程可以选择在其他机器或是本机,为了能够解析 usb.dev,还需要配置一下 /etc/hosts:

ip地址 usb.dev

如果用浏览器验证,需要把客户端证书导出成 p12 格式的

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

从服务器上将几个证书下载下来,然后安装到可信的证书列表,点击刚才生成的p12文件输入证书的密码将安装至个人列表。
然后关闭浏览器,重新输入域名,会出现ssl双向验证的证书提示。选择证书即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Nginx SSL快速双向认证配置(脚本)

    目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就绝不用代码解决的原则,在Nginx上做一下限制和修改即可. 这种需求其实实现方式很多,经过综合评估考虑,觉得SSL双向认证方案对用户使用最简单,遂决定用此方案. 注: 本方案在Ubuntu Server 16.04 LTS实施,其他操作系统请酌情修改 SSL双向认证 绝大多数SSL应用都以单向认证为主,即客户端只要信任服务端,就可以使用服务端的公钥加密后向服务端发起请求,由服务端的私钥解密之后获得请求数据. 如果这个过程

  • nginx环境下配置ssl加密(单双向认证、部分https)

    nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的.所以就试了一下部分页面https(不能只针对某类动态请求才加密)和双向认证.下面分节介绍. 默认nginx是没有安装ssl模块的,需要编译安装nginx时加入--with

  • Nginx+SSL实现双向认证的示例代码

    首先创建一个目录 cd /etc/nginx mkdir ssl cd ssl CA与自签名 制作CA私钥 openssl genrsa -out ca.key 2048 制作 CA 根证书(公钥) openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 注意: 1.Common Name 可以随意填写 2.其他需要填写的信息为了避免有误,都填写 . 吧 服务器端证书 制作服务器端私钥: openssl genrsa -out serv

  • Keepalived实现Nginx负载均衡高可用的示例代码

    第一章:keepalived介绍 VRRP协议 目的就是为了解决静态路由单点故障问题的 第二章: keepalived工作原理 2.1 作为系统网络服务的高可用功能(failover) keepalived高可用功能实现的基本原理为: 两台主机同时安装好keepalived软件并启动服务,开始正常工作时 角色为Master的主机获得所有资源并对用户提供服务 角色为Backup的主机作为Master主机的热备; 当角色为Master的主机失效或出现故障时 角色为Backup的主机将自动接管Mast

  • 用ES6的class模仿Vue写一个双向绑定的示例代码

    本文介绍了用ES6的class模仿Vue写一个双向绑定的示例代码,分享给大家,具体如下: 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods class TinyVue{ constructor({el, data, methods}){ this.$data = data this.$el = document.querySelector(el) this.$methods = methods // 初始化 this._com

  • 详解Nginx如何配置Web服务器的示例代码

    概述 今天主要分享怎么将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写HTTP响应 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求. 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器. 用于HTTP流量的每个虚拟服务器定义了称为位置的特殊配置实例,它们控制特定URI集合的处理. 每个位置定义了自己的映射到此位置的请求发生的情况.

  • Asp.net Core中实现自定义身份认证的示例代码

    Asp.Net Core中虽然集成了许多常用的身份认证,但很多时候,我们还是需要实现自己的身份认证接口,本文这里就简单的介绍下如何实现自定义身份认证接口. 首先写一个简单的接口. [Authorize] [HttpGet] public object Foo() { return DateTime.Now.ToString(); } 由于有Authorize标记,访问函数体前会判断用户是否通过认证,由于这里没有通过认证,会的得到一个500错误. 自定义认证处理类: 实现一个IAuthentica

  • ASP.NET Core 实现基本认证的示例代码

    HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authentication)是一种允许网页浏览器或其他客户端程序以(用户名:口令) 请求资源的身份验证方式,不要求cookie,session identifier.login page等标记或载体. - 所有浏览器据支持HTTP基本认证方式 - 基本身证原理不保证传输凭证的安全性,仅被based64编码,并没有encrypted或者hashed,一般部署在客户端和服务端互信的网络,在公网中应用BA认证通常与https结合 http

  • Spring Security 安全认证的示例代码

    1.1 动态用户 1.1.1 放行资源   如果我们再配置的时候没有放行登录页等一些不需要登录就可以看到的资源,那么访问的时候就会全部拦截导致访问不到.所以我们要配置放行一些无需登录就可以看到的资源. <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:be

  • 利用Springboot实现Jwt认证的示例代码

    JSON Web Token是目前最流行的跨域认证解决方案,,适合前后端分离项目通过Restful API进行数据交互时进行身份认证 关于Shiro整合JWT,可以看这里:Springboot实现Shiro+JWT认证 概述 由于概念性内容网上多的是,所以就不详细介绍了 具体可以看这里:阮一峰大佬的博客 我总结几个重点: JWT,全称Json Web Token,是一种令牌认证的方式 长相: 头部:放有签名算法和令牌类型(这个就是JWT) 载荷:你在令牌上附带的信息:比如用户的id,用户的电话号

  • Nginx配置实现下载文件的示例代码

    偶尔听人说用nginx实现文件上传下载,之前看nginx实践大致看到过,没有细究.所以今天就想研究下nginx实现文件的上传下载,直接开搞,本地服务启起.这里记录下配置及踩坑记录. 一.配置 http { ... server: { # 配置下载 location /download { root D:\\download; autoindex on; autoindex_exact_size off; } } ... } 这是目录里随便放的几个文件,可以看到实现成功. 这里踩过几个坑,下面提示

随机推荐