自签名的证书无法被吊销,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. nyoj585 取石子(六) Nimm博弈

    此题数据十分极限,需要优化,否则会超时.关于此题的不足:明明说的每堆石子数不超过100,我开一个105大小的数组想用哈希居然Runtime Error!! 后来看见有人说需要优化输入: void in ...

  2. UVA-804 模拟

    将每个translation的输入和输出place全部记录下来,模拟即可,当所有translation都不能工作时,就说明dead了. AC代码: #include<cstdio> #in ...

  3. Linux sftp 安全文件传输命令

    sftp 是一个交互式文件传输程式.它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性. 1.常用登陆方式: 格式:sftp <user>@<host> 通过sftp ...

  4. 使用IntelliJ IDEA 和 Maven创建Java Web项目

    1. Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工 ...

  5. JMeter使用(Linux)

    JMeter是一个Java桌面应用程序,用户界面采用Swing Java Api实现,支持并发和多线程或者线程组的执行,对于配置负载测试和压力测试非常有用.Jmeter是开源.免安装的,只需要有jdk ...

  6. android/底层获取上下文对象

    public class ContextUtils { private static Context applicationContext = null; public static Context ...

  7. MacOS App代码申请管理员权限

    原文: https://jacobpan3g.github.io/cn/2018/02/07/gain-root-permission-for-mac-app/,有问题欢迎在原文评论区一起讨论交流,我 ...

  8. FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)

    FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法. swscale主 ...

  9. Windows平台的PHP之开启COM配置

    Windows平台的PHP如果未配置COM,调用COM组件,错误如下 Fatal error: Class 'COM' not found in XXXXXXXXX php 根目录的 ext 文件夹下 ...

  10. VxWorks启动过程详解(上)

    vxworks有三种映像: VxWorks Image的文件类型有三种 Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM ROM-based Images(压缩/没有压 ...