自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信
 
如果你的规划需要创建多个证书,那么使用私有CA的方法比较合适,因为只要给所有的客户端都安装了CA的证书,那么以该证书签名过的证书,客户端都是信任的,也就是安装一次就够了
如果你直接用自签名证书,你需要给所有的客户端安装该证书才会被信任,如果你需要第二个证书,则还的挨个给所有的客户端安装证书2才会被信任。
 
 
 
证书类型:
x509的证书编码格式有两种
1.PEM(Privacy-enhanced Electronic Mail) 是明文格式的  以 -----BEGIN CERTIFICATE-----开头,已-----END CERTIFICATE-----结尾,中间是经过base64编码的内容,apache需要的证书就是这类编码的证书 查看这类证书的信息的命令为 :openssl x509 -noout -text -in server.pem
其实PEM就是把DER的内容进行了一次base64编码
2.DER 是二进制格式的证书   查看这类证书的信息的命令为 :openssl x509 -noout -text -inform der -in server.der
 
 
扩展名:
.crt 证书文件 ,可以是DER(二进制)编码的,也可以是PEM( ASCII (Base64) )编码的 ,在类unix系统中比较常见 
.cer 也是证书  常见于Windows系统  编码类型同样可以是DER或者PEM的,windows 下有工具可以转换crt到cer
.csr 证书签名请求   一般是生成请求以后发送给CA,然后CA会给你签名并发回证书
.key  一般公钥或者密钥都会用这种扩展名,可以是DER编码的或者是PEM编码的  查看DER编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform DER  -noout -text -in  xxx.key  查看PEM编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform PEM   -noout -text -in  xxx.key  
.p12 证书  包含一个X509证书和一个被密码保护的私钥

生成证书签名请求  用openssl  req
给证书签名 用 openssl x509

自签名证书的Issuer和Subject是一样的
证书的三个作用   加密通信和身份验证(验证对方确实是对方声称的对象)和数据完整性(无法被修改,修改了会被知)

一. 自签名证书:
1.生成服务器私钥  openssl genrsa -des3 -out server.key 4096
2.生成证书签名请求  openssl req -new -key server.key -out server.csr  这里要填一大堆东西 保证Common name跟你的域名或者IP相同
3.对上一步生成的证书签名请求进行签名  openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
4.生成无需密码的服务器私钥 ,如果私钥是有密码的,则每次启动web服务器都会要求你输入密码
 openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
 确保你的私钥的安全性  因为该证书无法被吊销  chmod 999  server.key.secure  server.key
还有一个简单的方法一步创建私钥和自签名请求
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout apache.key -out apache.crt
这里的apache.key为私钥  apache.crt为证书

 
二.创建私有CA,然后用该CA给证书进行签名
1.创建CA私钥  openssl genrsa -des3 -out ca.key 4096
2.生成CA的自签名证书   openssl req -new -x509 -days 365 -key ca.key -out ca.crt   其实CA证书就是一个自签名证书
3.生成服务端私钥  openssl genrsa -des3 -out server.key 4096
4.需要签名的对象(服务端)生成证书签名请求  openssl req -new -key server.key -out server.csr 
这里注意证书签名请求当中的Common Name必须区别与CA的证书里面的Common Name
5.用步骤2创建的CA证书给步骤4生成的签名请求进行签名
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
 
 
三.查看信息
 openssl rsa -noout -text -in server.key 查看私钥信息
openssl req -noout -text -in server.csr 查看签名请求信息
openssl rsa -noout -text -in ca.key   查看ca的私钥信息
openssl x509 -noout -text -in ca.crt  查看证书信息
openssl crl -text -in   xx.crl  查看一个证书吊销列表信息
openssl x509 -purpose -in cacert.pem  查看一个证书的额外信息
openssl rsa -in key.pem -pubout -out pubkey.pem 从一个私钥里面提取出公钥
openssl rsa -noout -text -pubin -in apache.pub  查看一个公钥的信息
openssl verify  -CAfile  指定CA文件路径    apache.crt  验证一个证书是否是某一个CA签发
 openssl s_client -connect 192.168.20.51:443  模拟一个ssl客户端访问ssl服务器  如果服务端要求客户端提供证书  则在加上 -cert 和-key参数 比如 openssl s_client -connect 192.168.20.51:443 -cert client.crt  -key client.key 
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys  从p12文件里面提取证书openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes  从p12文件里面提取私钥
 
 
 
现代浏览器检查一个证书是否仍然有效 两种方法 OCSP (Online Certificate Status Protocol,在线证书状态协议) 和crl (Certificate Revoke List ,证书吊销列表)
这些信息在CA的证书里面应该得有,否则浏览器无法检查由该CA签过的证书是否还继续有效  (这句话属于猜测)
可以试一下导出给京东或者淘宝签名的CA证书 并用openssl x509 -noout -text -in ca.crt 查看一下,就能看到这两类信息京东的证书是由GeoTrustSSL进行签名的,导出GeoTrustSSL CA的证书 然后查看该CA的信息其中有一段信息是这样

  1. X509v3 CRL Distribution Points:
  2. Full Name:
  3. URI:http://g1.symcb.com/crls/gtglobal.crl
  4. Authority Information Access:
  5. OCSP - URI:http://g2.symcb.com

这里说明了它的证书吊销列表地址和OSCP协议地址
有兴趣的可以试试给淘宝签名的CA的证书信息

 
对已证书吊销列表 各浏览器的行为可以参考一下两个地址
 
 
easy-rsa这个包封装了这些操作,可以很方便的创建CA和证书 这个工具是为了配合openvpn使用的,不过也可以用来创建WEB证书

easy-rsa的特点是 使用方便不需要记忆大量的命令 而且配置文件里面有各种信息可以使你生成带有扩展信息的签名 比如 CA:TRUE等信息
1.安装easy-rsa
yum install easy-rsa
2.然后拷贝整个目录到工作目录 比如当前目录
cp -r /usr/share/easy-rsa/2.0 .
3.进入工作目录 cd 2.0
4.修改vars文件  修改国家省市代码 Common Name等,修改完以后导入一下
.  vars
5:  清除一下    ./clean-all
6.创建CA证书  ./build-ca   运行完这一步 在keys目录下就生成了 ca.crt(CA证书),ca.key(CA私钥)
7.创建服务端证书  ./build-key-server  域名或者ip(有域名填域名没域名写ip)  这样就创建好服务端证书和私钥了
 
8.安装CA的证书到客户端    然后安装服务端的证书和私钥到APACHE
 
 
    
apache的ssl配置
把生成的服务端的证书和私钥拷贝到一个目录 保证私钥的安全性
然后安装apache的ssl模块
yum install mod_ssl
修改 vim /etc/httpd/conf.d/ssl.conf
修改 SSLCertificateFile 指令为证书文件的路径
修改 SSLCertificateKeyFile 修改为私钥文件的路径
 
 
 
reference:
 
---
 
 
参考:
 
 
 
 

自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】的更多相关文章

  1. 使用openssl创建自签名证书及部署到IIS教程

    概要 本文讲解三个部分:1. 创建自签名证书2. 创建自己的证书颁发机构3. 以及如何配置IIS 创建自签名证书 首先,创建一个私钥文件: openssl genrsa -out myselfsign ...

  2. 使用 OpenSSL 为 Nginx 创建自签名证书 并开启客户端身份验证

    本文章默认读者了解Openssl,CA,网站证书相关知识,直接实战!配置完成后,浏览器会显示"安全的HTTPS"连接.不会像其他文章那样,是红色警告的证书提示. 准备环境 笔者使用 ...

  3. [Apple开发者帐户帮助]三、创建证书(4)创建Safari签名证书

    您的Safari扩展程序必须由Apple颁发的证书签名,您可以在开发者帐户中创建和下载该证书. 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择“Safari扩展”. 在“证书”下,选择“ ...

  4. [转]用Node.js创建自签名的HTTPS服务器

    用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key ...

  5. Node.js创建自签名的HTTPS服务器

    https://cnodejs.org/topic/54745ac22804a0997d38b32d  用Node.js创建自签名的HTTPS服务器  发布于 4 年前  作者 eeandrew  6 ...

  6. java 创建 HMAC 签名

    ava 创建 HMAC 签名 psd素材 1. []ComputopTest.java package com.javaonly.hmac.test; import java.io.IOExcepti ...

  7. 创建自己的PKI公/私密钥对和公钥证书

    1. 创建certificate request configuration file cert_req.conf******************************************* ...

  8. 使用 OpenSSL为WindowsServer远程桌面(RDP)创建自签名证书 (Self-signed SSL certificate)

    前言 笔者查阅很多资料,才写成此文章,如有错误,请读者们及时提出. 一般大家使用远程桌面(Remote Desktop)连接Windows Server时,总会有一个警告提示,如图1 图1 出现此警告 ...

  9. OpenSSL 创建自签名证书

    1.生成服务器私钥 openssl genrsa -out client.key 4096   2.生成证书签名请求(CSR) openssl req -new -key client.key -ou ...

随机推荐

  1. Yii的URL助手

    Url 帮助类 获得通用 URL 记住 URLs 检查相对 URLs Url 帮助类提供一系列的静态方法来帮助管理 URL. 获得通用 URL 有两种获取通用 URLS 的方法 :当前请求的 home ...

  2. Android ADB Server启动失败

    启动Android Stdio的时候报如下错误: Unable to create Debug Bridge: Unable to start adb server: error: could not ...

  3. python str与bytes之间的转换

    # bytes object b = b"example" # str object s = "example" # str to bytes bytes(s, ...

  4. window7 x64 vs2015 如何编译 libqr 二维码生成库?

    1.下载libqr库 下载地址:https://github.com/rsky/qrcode 注:因 libqr 依赖 zlib 库,所以首先编译 zlib库 zlib 库编译指南:http://ww ...

  5. UVA-11214 IDA*

    利用迭代加深搜索,枚举需要的皇后数量,进行搜索. 对于10 * 10 的棋盘,最多需要5个皇后就能攻击整个棋盘,当0~4个皇后都不能搜索成功,那么5就不用搜索,直接打印. AC代码: #include ...

  6. APP性能测试(CPU)

    获取数据 :adb shell dumpsys cpuinfo | grep packagename result = os.popen("adb shell dumpsys cpuinfo ...

  7. swift 之归档和解归档

    swift 之归档和解归档 数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,iOS 中基本有以下几种方式:sqlite存储.coredata存储.UserDefault存储.归档.p ...

  8. jmeter 脚本规范

    总结了一下公司正在用 jmeter 脚本规范. 使用 jmeter 进行接口级测试, 随着接口增多以及业务逻辑越来越复杂, 导致 jmeter 脚本的维护会更加困难.针对实际使用中发现的问题进行一些规 ...

  9. Linux常用软件

    网络应用 即时聊天 pidgin 支持多协议,如msn, yahoo, icq, irc ... eva QQ 聊天客户端,KDE程序,推荐 Skype 网络电话,网络聊天,推荐 lumaqq Jav ...

  10. 学习笔记︱深度学习以及R中并行算法的应用(GPU)

    笔记源于一次微课堂,由数据人网主办,英伟达高级工程师ParallerR原创.大牛的博客链接:http://www.parallelr.com/training/ 由于本人白痴,不能全部听懂,所以只能把 ...