精华内容
下载资源
问答
  • 可省去choco下载安装的步骤,直接使用mkcert创建和签名证书,通过mkcert -install命令创建ca根证书,傻瓜式零配置签发证书
  • 02. 创建 CA 根证书和秘钥 02. 创建 CA 根证书和秘钥 安装 cfssl 工具集 创建配置文件 创建证书签名请求文件 生成 CA 证书和私钥 分发证书文件 参考 为确保安全,kubernetes 系统各组件需要使用 x509 证书对...

    tags: TLS, CA, x509

    02. 创建 CA 根证书和秘钥

    为确保安全,kubernetes 系统各组件需要使用 x509 证书对通信进行加密和认证。

    CA (Certificate Authority) 是自签名的根证书,用来签名后续创建的其它证书。

    CA 证书是集群所有节点共享的,只需要创建一次,后续用它签名其它所有证书。

    本文档使用 CloudFlare 的 PKI 工具集 cfssl 创建所有证书。

    注意:如果没有特殊指明,本文档的所有操作均在 zhangjun-k8s-01 节点上执行

    安装 cfssl 工具集

    
    sudo mkdir -p /opt/k8s/cert && cd /opt/k8s/work
    
    wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64
    mv cfssl_1.4.1_linux_amd64 /opt/k8s/bin/cfssl
    
    wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssljson_1.4.1_linux_amd64
    mv cfssljson_1.4.1_linux_amd64 /opt/k8s/bin/cfssljson
    
    wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl-certinfo_1.4.1_linux_amd64
    mv cfssl-certinfo_1.4.1_linux_amd64 /opt/k8s/bin/cfssl-certinfo
    
    chmod +x /opt/k8s/bin/*
    export PATH=/opt/k8s/bin:$PATH

    创建配置文件

    CA 配置文件用于配置根证书的使用场景 (profile) 和具体参数 (usage,过期时间、服务端认证、客户端认证、加密等):

    cd /opt/k8s/work
    cat > ca-config.json <<EOF
    {
      "signing": {
        "default": {
          "expiry": "87600h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
                "signing",
                "key encipherment",
                "server auth",
                "client auth"
            ],
            "expiry": "876000h"
          }
        }
      }
    }
    EOF
    • signing:表示该证书可用于签名其它证书(生成的 ca.pem 证书中 CA=TRUE);
    • server auth:表示 client 可以用该该证书对 server 提供的证书进行验证;
    • client auth:表示 server 可以用该该证书对 client 提供的证书进行验证;
    • "expiry": "876000h":证书有效期设置为 100 年;

    创建证书签名请求文件

    cd /opt/k8s/work
    cat > ca-csr.json <<EOF
    {
      "CN": "kubernetes-ca",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "k8s",
          "OU": "opsnull"
        }
      ],
      "ca": {
        "expiry": "876000h"
     }
    }
    EOF
    • CN:Common Name:kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法;
    • O:Organization:kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group)
    • kube-apiserver 将提取的 User、Group 作为 RBAC 授权的用户标识;

    注意:

    1. 不同证书 csr 文件的 CN、C、ST、L、O、OU 组合必须不同,否则可能出现 PEER'S CERTIFICATE HAS AN INVALID SIGNATURE 错误;
    2. 后续创建证书的 csr 文件时,CN 都不相同(C、ST、L、O、OU 相同),以达到区分的目的;

    生成 CA 证书和私钥

    cd /opt/k8s/work
    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    ls ca*

    分发证书文件

    cd /opt/k8s/work
    source /opt/k8s/bin/environment.sh
    for node_ip in ${NODE_IPS[@]}
      do
        echo ">>> ${node_ip}"
        ssh root@${node_ip} "mkdir -p /etc/kubernetes/cert"
        scp ca*.pem ca-config.json root@${node_ip}:/etc/kubernetes/cert
      done

    参考

    1. 各种 CA 证书类型
    展开全文
  • 【前言】 说一下大背景吧,我们的一个后台服务需要部署在一个没法上外网的环境,但是我们的后台服务需要访问七牛云进行对象存储,于是乎,需要一个代理来完成这个访问,我门采用nginx... 造完根证书以及中间证书后...

    【前言】

           说一下大背景吧,我们的一个后台服务需要部署在一个没法上外网的环境,但是我们的后台服务需要访问七牛云进行对象存储,于是乎,需要一个代理来完成这个访问,我门采用nginx七层来做这个代理,因为七牛访问是https,那么必然就需要自签证书咯。然后就开始吭哧吭哧造自签证书(具体签发过程请移步这里:基于OpenSSL的CA建立及证书签发)。

           造完根证书以及中间证书后,问题就来了,我在代理和后台服务放置的都是中间证书,于是乎就一直报错无法验证证书。说来真是惭愧,起初我一直自以为是的认为是代码的问题,虽然看后台服务日志确实有个报错,但是在浏览器访问的时候返回的信息是证书验证不通过。我一直和开发同学强调大概率是他们代码错误,最后在他们团队leader耐心的和我一起进行调试后,发现我应该把签发的根证书放到后台服务所在机器,我们的后台服务需要读取(用携带一词或许更合适一点)这个根证书去和代理进行交互。

           总的来说,就是后台服务就好比我们的浏览器,我们通过浏览器去访问某个https的网站,浏览器本身是内置了对应的根证书的,那么你想想,我们的后台服务是不是也应该要内置这些对应的根证书呢?是不是突然就犹如醍醐灌顶,茅塞顿开了。之后我把自签的根证书替换到后台服务后,问题果然得到解决。

           复盘整个过程,仔细回味一下,为什么后台服务需要携带这个根证书去和代理端进行交互验证呢?换句话说,为什么浏览器需要内置根证书去验证要访问的https呢?那么SSL证书是什么?CA中间根证书是什么?CA根证书又是什么东西呢?请听我细细道来.......

    【SSL证书】

    百度曰:SSL证书是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能的证书

          这些是我个人的相关理解

    对HTTPS的思考之HTTPS如何做到数据传输安全的呢?

    HTTPS建立连接详细过程

    其实我个人感觉人们常常是将SSL证书称之为CA证书,也有称之为server证书的,说到底就是CA中心签发的一个可信的证书。

    【CA中间证书是什么】

           中间二字早已表明它的身份,它是介于SSL证书和CA根证书中间的一个东西。试想一下,如果用CA根证书直接签发SSL证书,如果发生了错误,或者说要取消掉root,那么用这个根证书签名的所有证书都将变为不可信。所以,根证书用自己的私钥对中间证书进行签名,这个时候中间证书变为可信证书了。中间根又可以给另一个中间根进行签名,这个被中间根签名的新中间根同样可以用来签署SSL证书。

    【CA根证书到底是什么】

    百度曰:根证书是未被签名的公钥证书或自签名的证书

           我们来了解下浏览器是如何来信任一个https网站的TLS证书的。首先我们要知道,证书(后文称之为证书A)中的内容有用户的信息、公钥以及CA中心的签名。那么问题来了,我们如何确定这个CA组织的签名是否可信呢?显然需要用到这个CA中心的公钥,那么这个公钥又要从哪里获取呢?当然是从包含有CA中心公钥的那份证书(后文称之为证书B)中获取。下载了证书B后,问题又来了,如何验证证书B又是可信的呢?于是又要用签发证书B的证书C来验证这个证书B是可信的。

    这个时候你会发现,这似乎是一个死循环,一层层嵌套,人们还给它取了一个有趣的名字:证书链。或许你会想,都死循环了,那还玩犊子啊。显然不是这样,证书链是有终结的,你想啊,如果我不用别人给我签名的证书,我自己给自己签名,那么是不是就不需要上一层证书的验证呢?对的,这个证书链的顶端就是这么个自己给自己签名的证书,称之为根证书,俗称自签证书。当年拥有了这个根证书(这里我称之为一级证书),就表明你会信任它签发的所有证书(这里我称之为二级证书),当然也会信任被二级证书签发的三级证书、被三级证书签发的四级证书......是不是突然想起一句古文“子又生孙,孙又生子;子又有子,子又有孙”,从这个一层层签发来看,确实是这么回事。

    一句话总结,根证书是CA中心给自己签名的证书,是证书链的起点,安装根证书,就是信任此CA中心。

    展开全文
  • curl ssl ca根证书

    2015-12-10 22:13:35
    可以下载下来直接用的,可以解决一些curl的ssl认证方面的问题
  • 刚才我们生成的CA根证书是不被系统信任的,所以我们要导出rootca的证书,并安装到系统中,这样由rootca签发的证书都会被信任。 7.导出根证书,客户端进行信任配置 keytool -exportcert -alias trootca -...

    步骤一:环境准备

    1)电脑中部署好以下环境

            Tomcat:apache-tomcat-9.0.11

            JDK:jdk1.8.0_144

         通过地址:http://localhost:8080/   可以正常访问tomcat的猫猫头。

    2)tomcat启用https协议功能(后面步骤会介绍如何生成秘钥)

        修改server.xml文件(apache-tomcat-9.0.11\conf),配置https连接器:

        释放掉https连接器

      修改https连接器内容,包含端口号、秘钥库文件路径,以及配置秘钥的口令(就是再生成秘钥文件时设置的口令)

    备注:浏览器访问8080端口的连接器时,会以加密的方式来访问web服务器,连接器收到浏览器的请求后,会向浏览器出示一份数字证书,浏览器再用数字证书里面的公钥来加密数据, certificateKeystoreFile="tomcat11.keystore"用来指明密钥库文件的所在路径,服务器从密钥库中提取证书时需要密码,certificateKeystorePassword="123456"指明密钥库的访问密码。(tomcat8及8一下的版本配置的是keystoreFile="conf/.keystore"和keystorePass="123456")

    3)启动tomcat,使用https://localhost:8080 进行访问测试。

    步骤二:理论知识

    1)HTTPS简介

    超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。具体介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯,而HTTPS占用443端口通讯。在计算机网络上,HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。

    HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。

    SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议分为两层,SSL记录协议建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能支持。SSL握手协议建立在SSL记录协议之上,用户实际数据传输开始前进行身份验证、协商加密算法、交换加密秘钥。

    问题:Firebug和postman之类的浏览器调试工具,为什么获取到的是明文?

    解答:

    SSL是对传输的数据进行加密,针对的是传输过程的安全。 

    firebug之类的浏览器调试工具,因为他们得到的是客户端加密之前/解密之后的数据,因此是明文的。

    2)HTTPS工作原理

    3)自签名证书简介

    • JDK中keytool是一个证书管理工具,可以生成自签名证书。 就是自己生成的证书,并不是官方生成的证书。除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。

    • 其他描述

    • a)客户端发起HTTPS请求

    • 这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

    • b) 服务端的配置

    • 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

    • c) 传送证书

    • 这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

    • d)客户端解析证书

    • 这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

    • e)传送加密信息

    • 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

    • f)服务段解密信息

    • 服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

    • g)传输加密后的信息

    • 这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

    • h)客户端解密信息

    • 客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

     步骤三:生成证书

    keytool是jdk自带的一款ssl管理工具,keytool  --help看帮助信息。

    1)生成自签名根证书
    执行命令:keytool -genkeypair -alias trootca -keyalg RSA -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore

    然后按照提示输入

    输入密钥库口令:  
    再次输入新口令: 
    您的名字与姓氏是什么?
      [Unknown]:  xx认证中心
    您的组织单位名称是什么?
      [Unknown]:  xx认证中心
    您的组织名称是什么?
      [Unknown]:  xx认证中心
    您所在的城市或区域名称是什么?
      [Unknown]:  杭州
    您所在的省/市/自治区名称是什么?
      [Unknown]:  杭州
    该单位的双字母国家/地区代码是什么?
      [Unknown]:  CN
    CN=xx认证中心, OU=xx认证中心, O=xx, L=zz, ST=gd, C=CN是否正确?
      [否]:  Y

    输入 <rootca> 的密钥口令
        (如果和密钥库口令相同, 按回车): 

    alias是别名,就是给某某证书取个名字,可以随便写,可以用changealias命令修改
    keyalg是加密算法,有DSA,RSA,默认是DSA,因为DSA只能用于加密,不能用户证书签名,所以这里必须指定使用RSA算法

    这里有两个密码:密钥库密码和密钥密码,密钥库是存储密钥的地方,他有密码;只有知道这个密码才可以访问这个密钥库;密钥密码用于生产密钥。

    如果密钥库不存在,则会使用输入的密码创建一个密钥库。密钥密码可以和密钥库密码一样。

    因为我是用的tomcat做实验,这里有点问题,密钥库密码和密钥密码不一致会导致tomcat启动不了,报错提示密码错误(canot recover key),不知道是不是tomcat的bug,没有去验证,反正密码一样就不报错了。

    命令执行成功后,如果没有指定keystore指定的位置,默认会在用户的home目录下生成.keystore文件,可以使用-keystore 参数指定生成的地址

    这样就生成了一个自签名的根证书

    2)用下列命令查看生成的结果

    keytool -list -v -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore

    可以看到这个证书的所有者和发布者都是xx认证中心,这就叫自签名.CA根证书都是自签名的

    再生产一个自签名的证书,后面用前面这个rootca来签名这个证书,这样这个证书就不是自签名的证书,而是得到xx认证中心认证的证书了

    3)生成二级的自签名证书
    keytool -genkeypair -alias ttomcatcas -keyalg RSA -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore

    输入密钥库口令:  
    您的名字与姓氏是什么?
      [Unknown]:  codecrazy.com
    您的组织单位名称是什么?
      [Unknown]:  XX技术有限公司
    您的组织名称是什么?
      [Unknown]:  XX技术有限公司
    您所在的城市或区域名称是什么?
      [Unknown]:  杭州
    您所在的省/市/自治区名称是什么?
      [Unknown]:  杭州
    该单位的双字母国家/地区代码是什么?
      [Unknown]:  CN
    CN=www.baidu.com, OU=百度技术有限公司, O=百度技术有限公司, L=背景, ST=北京, C=CN是否正确?
      [否]:  Y

    输入 <baidu> 的密钥口令
        (如果和密钥库口令相同, 按回车): 

     

    现在假设我们是XX技术有限公司,我们需要申请一个证书,如上,我们生成了一个叫XX的自签名证书,但是XX的信用很差,广大网友不认可XX的信誉,所以XX的证书要到xx认证中心去认证。

    先通过这个自签名证书生成一个证书请求

    3.生成证书请求
    keytool -certreq -alias ttomcatcas -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore -file E:/workspace/apereo-cas/certificate/1/tomcatcas.csr

    这样就生成了一个证书请求文件tomcatcas.csr。然后我们拿着这个文件和钱去xx认证中心

    4.去测试认证中心认证

    keytool -gencert -alias trootca -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore -infile E:/workspace/apereo-cas/certificate/1/tomcatcas.csr -outfile E:/workspace/apereo-cas/certificate/1/tomcatcas.cer

    tomcatcas.cer就是经过认证中心认证的证书了。XX拿着这个证书就回家了,然后把这个证书导入密钥库。证书的发布者就变成了xx认证中心


    5.导入认证后的证书

    keytool -importcert -alias ttomcatcas -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore -file E:/workspace/apereo-cas/certificate/1/tomcatcas.cer


    6.查看结果

    keytool -list -v -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore可以看到,发布者已经变成xx认证中心了。
    这里有几点要注意,导入的密钥库必须是之前生成证书请求的密钥库,并且alias也要和之前一样。因为证书只包含公钥,而私钥在密钥库,所以必须导入之前生成证书请求的密钥库,并且alias必须和之前相同,这样才知道这个证书属于哪个别名。之前不知道这个概念,把证书导入到新的密钥库,导致做https的时候出错

    我们用浏览器访问https网站,有些会提示不安全,有些不会,为什么呢?那些不会提示的是因为他们用的是第三方权威机构认证的证书,而我们系统已经内置了很多权威机构的根证书。只要系统信任某个根证书,由此根证书签发的二级证书也会被系统信任。

    刚才我们生成的CA根证书是不被系统信任的,所以我们要导出rootca的证书,并安装到系统中,这样由rootca签发的证书都会被信任。

    7.导出根证书,客户端进行信任配置

    keytool -exportcert -alias trootca -keystore E:/workspace/apereo-cas/certificate/1/rootca.keystore -file E:/workspace/apereo-cas/certificate/1/rootca.cer

     把rootca.cer交给客户端,并导入系统,这样客户端浏览器访问我们的网站就不会提示不安全了。

    将证书填入到“受信任的根证书颁发机构”。具体方法:(我用的谷歌浏览器):

    - 打开谷歌浏览器 --> 设置--> 高级 --> 管理证书 --> 中级证书颁发机构 --> 选择www.seeker.com,点击导出到桌面SEEKER.cer

    - 打开谷歌浏览器 --> 设置--> 高级 --> 管理证书 --> 受信任的根证书颁发机构 --> 导入SEEKER.cer


    其他浏览器将证书填入到“受信任的根证书颁发机构”:

    - 打开浏览器   - 工具  -  internet选项-内容- 证书-把中级证书颁发机构里的www.seeker.com(该名称即时你前面生成证书时填写的名字与姓氏)证书导出来-再把导出来的证书导入  受信任的根颁发机构  就OK了。

    遇到问题:

    chrome浏览器,不管怎么折腾一直提示证书有效,但是无法使用的问题。采用IE浏览器没有这个问题存在

    展开全文
  • 一、生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl req -new -x509 -days 365 -key ca.key -out ca.crt 注...

    一、生成CA根证书

    生成 CA 私钥:openssl genrsa -out ca.key 1024

    因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书openssl req -new -x509 -days 365 -key ca.key -out ca.crt

    注:-days 365 指定有效期,

    查看证书有效期openssl x509 -in server.crt -noout -dates

    二、每个证书持有人(Client、Server)都有一对公钥、私钥

    Server端
    (1)生成 服务器端 私钥:openssl genrsa -out server.key 1024

    (2)利用 服务器端 私钥导出公钥:openssl rsa -in server.key -pubout -out server.pub.key 【用不上,可以不执行

    Client端
    (1)生成 客户端 私钥:openssl genrsa -out client.key 1024

    (2)生成 携带密码的客户端 私钥,用-des3加密:openssl genrsa -des3 -out client.key 1024

    注:生成私钥可以指定私钥密码

    (3)利用 客户端 私钥导出公钥:openssl rsa -in client.key -pubout -out client.pub.key 【用不上,可以不执行

    三、使用自签名的CA根证书签发Client、Server的数字证书

    Server端
    (1)向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR(证书签名请求) 文件:openssl req -new -key server.key -out server.csr -days 365

    (2)向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的数字证书:openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt -days 365

    Client端
    (1)生成证书签名请求client.csr:openssl req -new -key client.key -out client.csr -days 365

    (2)对上一步的 证书签名请求 进行签名,颁发一个带有CA签名的数字证书:openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt -days 365

    查看证书信息:

    openssl x509 -in server.crt -noout -text
    openssl x509 -in client.crt -noout -text
    openssl x509 -in CA.crt -noout -text
    
    查看client证书中的公钥信息:
    openssl x509 -in client.crt -pubkey
    
    查看server证书中的公钥信息:
    openssl x509 -in server.crt -pubkey
    

    生成客户端证书安装包:
    将客户端证书文件client.crt和客户端证书密钥文件client.key,合并成客户端证书安装包client.pfx
    (使用server.crt、server.key也是一样的,只要是服务器使用的CA证书签发的都可以)

    openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
    openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx
    

    成后点击client.pfx,安装到浏览器证书中(一直点击“下一步”)这样在浏览器中就可以https访问服务器

    生成自定义证书(证书+私钥 格式):
    ca.crt文件和ca.key可以合到一个文件里面,把2个文件合成了一个ca.crt.key.pem文件(直接拷贝过去就行了)
    即手动生成了一个自定义证书(Windows下在拷贝时,需要将文档末尾空余一行)

    cat ca.crt ca.key > ca.crt.key.pem
    cat client.crt client.key > client.crt.key.pem
    cat server.crt server.key > server.crt.key.pem
    

    四、生成CSR示例

    下表可帮助您创建证书请求。

    Name姓名描述示例
    Country Name国家名称代表国家的两个字母 ISO 缩写。CN(中国)
    State or Province Name州或省组织所在州或省的名称。此名称不可使用缩写。ZJ(浙江)
    Locality Name所在地名称组织所在城市的名称。HZ(杭州)
    Organization Name组织名称组织的法定全称。请勿缩写组织名称。百度、腾讯、网易
    Organizational Unit Name组织部门可选,用于提供额外的组织信息。开发、测试、市场营销
    Common Name公用名别名记录的完全限定域名。如果两者不能精确匹配,那么您会收到一条证书名称检测警告。www.yourdomain.com
    Email Address电子邮件地址服务器管理员的电子邮件地址someone@yourdomain.com

    ➜ keys openssl req -new -key ca.key -out ca.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter ‘.’, the field will be left blank.
    -----

    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:ZJ
    Locality Name (eg, city) []:HZ
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:My CA
    Organizational Unit Name (eg, section) []:
    Common Name (e.g. server FQDN or YOUR name) []:apache.com/192.168.125.175
    Email Address []:

    注意
    Organization Name :CA、客户端、服务器端的CSR文件的这一项不要写成一样的!!!可以随意写如:My CA, My Server, My Client

    Common Name:这一项,是可以访问的域名,也可以配置为IP
    【“验证域名”功能,验证的就是这个!!!!】

    五、扩展
    根据不同编码查看私钥方式如下:
    PEM 编码格式:openssl rsa -in xxx.key -text -noout
    DER 编码格式:openssl rsa -in xxx.key -text -noout -inform der

    同一 X.509 证书的不同编码之间可以互相转换:
    PEM 转为 DER:openssl x509 -in xxx.pem -outform der -out xxx.der
    DER 转为 PEM:openssl x509 -in xxx.der -inform der -outform pem -out xxx.pem

    六、一些概念说明
    CA(Certification Authority)证书
    如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。 CSR
    在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。(CRT,证书含公钥)
    CA证书即CA颁发的证书,包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。

    CA证书(数字证书)由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA证书(数字证书)就是经过CA认证过的公钥。

    公钥、私钥
    在 RSA 中有「公钥」和「私玥」两种密钥,其中私钥可以导出公钥,但公钥无法反推私钥
    私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管

    签名加密、解密
    签名:CA用私钥给服务签发证书,证书中携带签名,CA用公钥验证这个签名是否是我签发的

    传输加密、解密
    传输:用接收方提供的的证书(相当于公钥)对需要发送给对方的数据进行加密,接收方用自己的私钥对接收到的数据进行解密。

    因此,如果说数字证书是电子商务应用者的网上数字身份证话,那么证书相应的私钥则可以说是用户的私章或公章

    参考连接:
    数字证书、公钥和私钥这三者之间的关系是什么

    展开全文
  • 使用CA根证书生成用于本地开发的SSL证书的工作流 工作流程 在此工作流程中,我们将为以下开发域生成示例证书: https://www.symfony/ https:/symfony/ https://mysql.symfony/ 就像一个标准的symfony应用程序...
  • fiddler抓取终端https信息,提示:“由于CA 根证书不在“受信任的根证书颁发机构”存储区中,所以它不受信任” 解决方法: 通过在电脑端下载证书,将证书导入到“受信任的根证书颁发机构”存储区中解决该问题,具体...
  • CA根证书rootca.cer放到sdcard目录下,手动安装,安装的时候提示要先设置PIN或是密码,设置后才能安装。 安装后,在设置“安全性和位置信息”---》“加密与凭据”---》“信任的凭据”---》“用户”这里可以看到 ...
  • 本文实现了OpenSSL的CA证书的制作、服务器和客户端证书的制作,并使用node.js实现了服务器和客户端代码,也实现了java代码,同时验证了SSL/TLS单向和双向认证。
  • CA根证书无法识别

    千次阅读 2020-12-20 21:59:20
    一个企业要建立自己的企业 CA, 必须自签发一张 CA 根证书根证书用来为员工、外部网用户、机器及设备颁发数字证书。这类证书被用来进行数字签名和通讯加密,也用来控制网络资源的非法接入。但是,这种自签发的...
  • Android HTTPS SSL双向验证(CA根证书) 30 Mar 2017 由于公司项目需要,需要将原来部署的自签名证书切换为CA系统提供商的证书,所以需要对原来的证书生成做相应处理与替换。 想要看自签名证书生成方法可以参考原...
  • 本工具包含windows版本编译好的gmssl.exe(Linux版本需自己编译,命令行是通用的),以及方便签发证书的bat文件,gmssl命令行详细解释。可以用来生成ca证书,并且用ca证书签发用户证书
  • [root@node00 security]# openssl genrsa -des3 -out ca.key 2048 Generating RSA private key, 2048 bit long modulus …+++ …+++ e is 65537 (0x10001) Enter pass phrase for ca.key: Verifying - Ente...
  • 一、生成CA根证书 #生成 CA 私钥 openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书) openssl req -new -x509 -days 365 -key ca.key -out ca.crt 注:...
  • 2、因此,我们需要给群晖更新一下根证书,在电脑的浏览器打…… 1、最近由于 CA 根域名证书过期的原因,造成很多群晖证书失效,最直接的影响就是添加第三方套件源会提示如下图所示 “无效的位置”; 2、因此,...
  • 添加CA根证书到操作系统获得信任

    千次阅读 2016-11-13 18:40:00
    但在有的操作系统和一些版本中,需要将根证书配置为系统级的证书,才允许继续使用,系统就像个看大门的,需得首先过了这一关才行。尤其是因为出现证书机构颁发虚假证书问题,最近很多操作系统都加强了安全措施,对...
  • 我上一篇文章 (配置JAVA SSL/TLS 之websocket wss交互式认证)生成的证书都是java keytool 的证书,...1、创建CA的私钥openssl genrsa -out ca.key 20482、创建CA自签名证书openssl req -x509 -new -nodes -key ca.k
  • OpenSSL生成根证书CA及签发子证书

    千次阅读 2020-11-02 20:18:49
    目标:使用OpenSSL生成一个CA根证书,并用这个根证书颁发两个子证书server和client。 先确保系统中安装了OpenSSL,若没安装,可以通过以下命令安装: sudo yum install openssl 修改OpenSSL的配置 安装好之后,定位...
  • 使用OpenSSL创建CA根证书及自签名

    千次阅读 2015-01-21 22:37:35
    会要求使用密码保护CA根证书,一般是4-16位密码。 -days 是有效期(单位:天) 下列选项要求全部使用英文或拼音方式填写,一行一回车。 Country Name = 国家代码(两位大写字母,eg:CN) State or ...
  • CA证书:解决php curl: (60) SSL certificate problem: unable to get local issuer certificate等问题
  • 概述 官方最佳实践是用kubeadm构建证书,而如果要手动...制作etcd的CA根证书 解析kubeadm制作etcd的CA根证书 # openssl x509 -in ca.crt -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 0 (0x0)
  • 本文为使用过程中的一个工具记录,可实现在本地开启一个 HTTPS 服务器用于开发或测试。前面有写过使用 Node.js 搭建 HTTPS 服务器 其中的自签名生成证书方式比较简单,既充当...
  • 网络安全无疑是现阶段互联网发展最大的问题,数字证书是解决这个问题的一个...根证书CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。 数字证书颁发过程一般为:用户首先...
  • 独立根CA的安装与证书申请独立根CA与企业CA不同,独立CA不需要使用ActiveDirectory目录服务。独立CA最初是为了用作CA层次结构中的受信任的脱机根CA,或者是为了在涉及Extranet和Internet时使用。此外,如果想对CA...
  • 利用openssl生成CA证书的方法及证书,根据文档可以自己生成证书
  • ca根目录证书不受信任

    千次阅读 2020-10-27 15:47:32
    导出证书后将证书上传到应用中配置的证书目录,然后执行下面的命令 keytool -import -alias client -file server.cer -keystore servertrust.keystore 其中的server.cer是请求的服务上导出的证书,serve

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,876
精华内容 11,950
关键字:

ca根证书