目录

文章目录

  • 目录
  • 一. 名词解释
    • 1. CA机构
    • 2. SSL 证书(SSL Certificates)
    • 3. HTTPS(超文本传输安全协议)
    • 4. 单向认证
    • 5. 双向认证
  • 二. 获取证书途径
  • 三. 使用OpenSSL自签证书
    • 前置准备
    • 1. 生成CA证书
      • 生成步骤
      • 注意事项
    • 2. 生成服务端证书
      • 配置文件
      • 生成步骤
      • 注意事项
    • 3. 生成客户端证书
      • 生成步骤
  • 四. 配置证书
    • 单向认证
    • 双向认证
  • 五. 吊销列表
    • 吊销步骤
    • Nginx使用吊销列表

一. 名词解释

1. CA机构

电子商务认证中心、电子商务认证授权机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA是负责签发证书、认证证书、管理已颁发证书的机关。

2. SSL 证书(SSL Certificates)

即安全套接层(SSL)数字证书,数字证书是一种用于电脑的身份识别机制。数字证书可以从身份认证机构获得。理论上任何人都可以给您发个数字证书。换个说法就是给您发数字证书的那个人或机构对您的公钥进行加签。一般国际可信的证书由CA机构制作颁发,据各种不同情况,可能是CA给用户颁发的,或者用户主动申请的。

3. HTTPS(超文本传输安全协议)

一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。

4. 单向认证

只需要验证SSL服务器身份,不需要验证SSL客户端身份。

5. 双向认证

要求服务器和客户端双方都有证书,客户端需要校验服务端,服务端也需要校验客户端。

二. 获取证书途径

  1. 向CA认证商购买
  2. 使用OpenSSL自签证书

三. 使用OpenSSL自签证书

前置准备

  1. 下载并安装OpenSSL,win端在此网站下载 http://slproweb.com/products/Win32OpenSSL.html

    安装之后执行在命令行执行openssl version -a会输出相关信息

  2. 修改上一步执行命令后,OPENSSLDIR路径下的配置文件openssl.cnf

    将CA_default下的dir的值改为.,其他不变

  1. 新建一个文件夹,之后都是基于该文件夹下进行操作

  2. 在文件夹内新建以下内容

    certs     // 文件夹,保存导出证书
    config    // 文件夹,保存配置文件
    crl       // 文件夹,保存吊销列表
    csr       // 文件夹,保存请求文件
    newcerts  // 文件夹,保存证书
    private   // 文件夹,保存密钥
    crlnumber // 文本,下一个吊销列表序列号
    index.txt // 文本,保存签证信息
    serial    // 文本,下一个证书序列号
    
  3. 给crlnumber、serial写入文本01

  4. 以下均是在win系统上执行,若要在Linux上执行,请将执行步骤里的反斜杠\替换成正斜杠/

1. 生成CA证书

既然要自签证书,因此需要自己承担CA这个角色,首先需要生成CA证书

生成步骤

  1. 生成CA密钥

    openssl genrsa -out .\private\cakey.pem 4096

  2. 生成CA请求文件

    openssl req -new -sha256 -out .\csr\cakey.csr -key .\private\cakey.pem

  3. 生成CA证书

    openssl x509 -req -days 3650 -in .\csr\cakey.csr -signkey .\private\cakey.pem -out .\cacert.pem

  4. 导出安装用证书

    openssl pkcs12 -export -inkey .\private\cakey.pem -in .\cacert.pem -out .\certs\ca.pfx

注意事项

  1. 执行第二步时,会要求填入相关信息,内如如下

    Country Name (2 letter code) [AU]:CN // 国家
    State or Province Name (full name) [Some-State]:GuangDong // 省份
    Locality Name (eg, city) []:ShenZhen // 城市
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:YD-Cat // 机构
    Organizational Unit Name (eg, section) []:  // 单位,可选
    Common Name (e.g. server FQDN or YOUR name) []:YD-Cat  // 公用名,可选
    Email Address []:  // 可选Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:     // 可选
    An optional company name []: // 可选
    
  2. 第三步的 -days 3650 用来指定证书有效时间,若不指定则使用OpenSSL配置文件里的默认值

2. 生成服务端证书

生成步骤和CA证书类似,但需要添加一个配置文件

配置文件

在config文件夹下新建一个server.conf文件,内容如下

[ req ]
req_extensions = req_ext[ req_ext ]
subjectAltName = @alt_names[alt_names]
DNS.1   = test.com   # 自行根据待配置证书的域名修改
DNS.2   = *.test.com # 自行根据待配置证书的域名修改,该项用来认证二级域名,若无需验证去掉即可

生成步骤

  1. 生成证书密钥

    openssl genrsa -out .\private\serverkey.pem 2048

  2. 生成证书请求文件

    openssl req -new -sha256 -out .\csr\serverkey.csr -key .\private\serverkey.pem

  3. 生成证书

    openssl ca -in .\csr\serverkey.csr -out .\certs\server.crt -days 3650 -extensions req_ext -extfile .\config\server.conf

    执行后输入两次 Y 并且回车即可

注意事项

  1. 执行第二步时,会要求填入相关信息,内容和CA证书一致

    但此时若不修改OpenSSL配置文件,服务端证书部分字段要求和CA证书的对应字段一致,或者必填,否则无法签名

    详情看配置文件openssl.cnf的[ policy_match ]项,根据需要修改对应的匹配规则即可

    # 匹配规则
    # match 完全一致
    # optional 可选
    # supplied 必填,可不一致
    [ policy_match ]
    countryName         = match
    stateOrProvinceName = match
    organizationName    = match
    organizationalUnitName  = optional
    commonName      = supplied
    emailAddress    = optional
    
  2. 根据server.conf中的[alt_names]项的DNS.1 = test.com来匹配认证域名,若不匹配打开网之后会提示证书不安全
    可使用 *.test.com 来通用匹配二级域名

3. 生成客户端证书

生成步骤和服务端类似,会多一个导出安装用证书的步骤

该步骤导出的文件用来在访问端电脑上安装

生成步骤

  1. 生成证书密钥

    openssl genrsa -out .\private\clientkey.pem 2048

  2. 生成证书请求文件

    openssl req -new -sha256 -out .\csr\client.csr -key .\private\clientkey.pem

  3. 生成证书

    openssl ca -in .\csr\client.csr -out .\certs\client.crt -days 3650

    执行后输入两次 Y 并且回车即可

  4. 导出安装用证书

    openssl pkcs12 -export -inkey .\private\clientkey.pem -in .\certs\client.crt -out .\certs\client.pfx

四. 配置证书

以Nginx为例,在Nginx的配置文件做以下修改

单向认证

  1. listen改为 443 ssl,server_name改为待配置证书的域名

    注:server_name需和生成服务端证书的server.conf里的[alt_names]一致

  2. 新增以下配置

ssl_certificate      D:\CA\certs\server.crt;      # 服务端证书,即生成服务端证书第三步生成的文件
ssl_certificate_key  D:\CA\private\serverkey.pem; # 服务端证书密钥,即生成服务端证书第一步生成的文件
  1. 在需要访问的电脑上安装certs文件夹下的CA证书,即生成CA证书的第四步生成的文件

    ca.pfx
    

    注意事项:

    1. 安装证书时选择安装位置,将证书安装在受信任的根证书颁发机构路径
    2. 若执行导出证书步骤时有填入密码,在安装证书时也要填写

  1. 重新加载Nginx配置文件
  2. 打开HTTPS网址,若一切正常,会正常登录,并在浏览器地址栏旁边会出现锁的图标

双向认证

  1. 在单向认证的基础上,Nginx新增以下配置
ssl_client_certificate D:\CA\cacert.pem;  # CA证书,即生成CA证书第三步所生成的文件
ssl_verify_client on;  # 开启客户端证书验证,即双向认证
  1. 在需要访问的电脑上安装certs文件夹下的客户端证书,即生成客户端证书的第四步生成的文件

    client.pfx
    

    注意事项:

    1. 安装时一直下一步即可
    2. 若最后打开网址无法选择证书,尝试像安装CA证书一样选择安装位置,安装到个人路径下
  2. 重新加载Nginx配置文件

  3. 打开HTTPS网址

    1. 若一切正常,会弹框提示选择证书
    2. 若有正常安装客户端证书,会有上一步所安装的客户端证书,以及相关信息
    3. 选择后可正常登陆,并在浏览器地址栏旁边会出现锁的图标

五. 吊销列表

目前吊销列表只适用于吊销客户端证书,并且已开启双向认证,将客户端证书吊销后即可无法登录

吊销步骤

  1. 获取证书编号

    openssl x509 -in .\certs\证书名.crt -noout -serial

    证书名改为生成客户端证书第三步生成的证书名

    执行后,serial后为证书编号

  2. 吊销证书

    openssl ca -revoke .\newcerts\证书编号.pem

    将证书编号改为上一步所获取的证书编号

  3. 生成吊销列表文件,每一次吊销证书后都需要执行,否则无法更新其文件内容

    openssl ca -gencrl -out .\crl\crl.pem

  4. 查看吊销列表,用来查看已吊销的证书,可不执行

    openssl crl -in .\crl\crl.pem -noout -text

Nginx使用吊销列表

  1. 在双向认证的基础上,新增以下配置

    ssl_crl  D:\CA\crl\crl.pem;  # 吊销列表文件
    
  2. 重新加载Nginx配置文件

  3. 打开HTTPS网址,之后和双向认证登陆一致,只是选择被吊销的证书后无法正常登陆

使用OpenSSL自签证书相关推荐

  1. Linux下OpenSSL自签ssl证书

    翻遍多篇自签ssl证书资料总结的经验,不过还是推荐用阿里云免费的证书.因内网需要用到的证书,所以使用了自签ssl. 文章目录 介绍 生成证书 成为CA颁发机构 创建CA签名证书 nginx项目配置文件 ...

  2. 转 openssl 建立服务器证书

    openssl 建立服务器证书 ##  1,建立目录和文件     set path=D:/openssl/bin     D:     cd D:/openssl/conf/     ren ope ...

  3. 密码技术--证书及go语言生成自签证书

    证书类似身份证,里面记录了某人的姓名.年龄.地址等个人信息,还包括这个人的公钥(身份证号码),并由认证机构(类似派出所)进行数字签名后发放,只要我们看到该证书就可以知道认证机构认定了该公钥(身份证号码 ...

  4. 使用Openssl签发SSL证书

    本文主要记述在Linux系统上使用Openssl创建SSL证书的流程,作为个人学习笔记.自签名证书分为自签名私有证书和自签名CA证书两种.自签名私有证书无法被吊销,自签名CA证书可以被吊销. 什么是o ...

  5. openssl私有CA证书签发与单双向认证

    什么是CA? CA是数字认证中心的简称.指的是发放.管理.废除数字证书的机构. CA的作用: 检查证书持有者身份的合法性.签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理. 建 ...

  6. centos7搭建DNS服务,CA字签证书

    1.描述TSL链路的通信图 第一阶段:client hello1:向服务端发送支持的协议版本,比如 tls1.22:客户端生成一个随机数,稍后用户生成"会话秘钥"3:发送支持的加密 ...

  7. Apache OpenSSL生成CA证书使用

    最近在学习SSL协议,这次是基于Apache服务器自带的openssl来实现的 TLS:传输层安全协议 SSL:安全套接字层 KEY:私钥 CSR:证书签名请求,即公钥,生成证书时需要将此提交给证书机 ...

  8. freeswitch使用自签证书,配置WSS

    Freeswitch使用自签证书 1. 使用SSL-TOOLS生成自签证书 (1) 下载ssl.ca-0.1.tar.gz [root@localhost ~]# wget http://files. ...

  9. 使用xca工具生成自签证书

    本文使用 xca 生成自签证书. 概述 之前使用 openssl 生成证书,在 golang 中测试,发现客户端连接失败,经查发现是Subject Alternative Name不支持导致的.因虚拟 ...

最新文章

  1. wxpython列表控件listctrl设置某行颜色_wxPython ListCtrl:写入彩色纹理
  2. Linux 网页挂马实验,网页挂马详细教程
  3. linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子
  4. Python把列表中的数字尽量等分成n份
  5. iso启动盘替换文件注意修改md5sum.txt
  6. eclipse各个版本下载
  7. php 同步文件到服务器上,PHPstorm配置同步服务器文件
  8. Linux数据管理——文件锁定
  9. 对话框ModifyStyle(0, WS_MINIMIZEBOX)最小化按钮无效的解决方法
  10. 英语4级的分数如何计算机,英语四级分数怎么算
  11. 计算机连接公用网络受限,本地连接受限制不能上网的原因及解决方法
  12. 广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点
  13. PS调出怀旧雨中特写的非主流照片
  14. 弗洛伊德(floyd)算法核心代码
  15. 永远的友谊_友谊的传递属性-温馨介绍的重要性
  16. 软考是什么?怎么准备----软考相关资讯
  17. Linux简单入门命令
  18. XGBoost参数说明
  19. Aspose.Cells.dll的运用
  20. Hello Createjs

热门文章

  1. 计算机基础应用自考成绩查询,计算机应用基础 自考
  2. 线性回归算法原理及python实现
  3. dfa matlab用法,用MATLAB实现DFA算法及报告.doc
  4. CFS菲律宾大使馆认证
  5. c#Reflect中MethodInfo使用方法(字符串反射调用函数方法的实现)
  6. java网络爬虫的一些基础理论和操作,jsoup使用简介
  7. 编写Java网络爬虫代码
  8. 机器学习算法(十五):XGBoost
  9. robot framework
  10. Oracle调优之Hint用法整理笔记