精华内容
下载资源
问答
  • 根据苹果的政策,自建证书应该是通不过审核的(不确定)。本文主要介绍了如何自建证书和iOS用自建证书验证https。创建用私钥签名的证书生成私钥openssl genrsa -out private.key 2048生成证书请求openssl req -new -...

    苹果针对ATS逐渐收紧了政策,最近看了一些https的资料,自建证书主要用到openssl。根据苹果的政策,自建证书应该是通不过审核的(不确定)。本文主要介绍了如何自建证书和iOS用自建证书验证https。

    创建用私钥签名的证书

    生成私钥

    openssl genrsa -out private.key 2048

    生成证书请求

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

    这一步需要填写证书信息,如

    Country Name (2 letter code) [AU]:CN

    State or Province Name (full name) [Some-State]:

    Locality Name (eg, city) []:

    Organization Name (eg, company) [Internet Widgits Pty Ltd]:

    Organizational Unit Name (eg, section) []:

    Common Name (e.g. server FQDN or YOUR name) []:

    Email Address []:

    其中,Common Name 填写证书绑定的域名,否则证书不能通过信任验证。

    生成服务器的私钥

    openssl rsa -in private.key -out server.key

    使用私钥生成服务器证书

    openssl x509 -req -in server.csr -out server.crt -outform pem -signkey server.key -days 365 -sha256

    openssl测试

    窗口1启动server

    openssl s_server -accept 10001 -key server.key -cert server.crt -tls1_2

    窗口2启动客户端

    openssl s_client -connect localhost:10001

    使用CA签名证书

    创建目录

    创建一个目录,并且将生成CA证书的脚本CA.sh复制到这个目录:

    mkdir ca

    cd ca

    cp /usr/local/ssl/misc/CA.sh CA.sh

    创建CA私钥和证书

    ./CA.sh -newca

    CA.sh会使用/usr/local/ssl/openssl.cnf中的配置来创建

    使用CA根证书签名

    #生成私钥

    openssl genrsa -out private.key 2048

    #生成证书请求

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

    #生成服务器的私钥

    openssl rsa -in private.key -out server.key

    #使用CA进行签名,生成server.crt

    cp server.csr newreq.pem

    ./CA.sh -sign

    mv newcert.pem server.crt

    或者上面三步都不需要,直接使用下面一步

    openssl ca -in server.csr -out server.crt

    ATS要求

    私钥加密算法

    2048位RSA 以上

    256位ECC 以上

    私钥签名证书算法

    SHA256 以上

    安全协议

    TLS1.2

    证书格式

    X.509

    iOS使用自签名证书

    生成cer

    iOS客户端支持的证书是DER格式的,直接将服务端的证书导出成DER格式。

    openssl x509 -inform PEM -outform DER -in server.crt -out server.cer

    NSURLSession验证

    //导入客户端证书

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"" ofType:@"cer"];

    NSData *data = [NSData dataWithContentsOfFile:cerPath];

    SecCertificateRef certificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) data);

    self.trustedCertificates = @[(__bridge_transfer id)certificate];

    - (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

    {

    //1)获取trust object

    SecTrustRef trust = challenge.protectionSpace.serverTrust;

    SecTrustResultType result;

    //注意:这里将之前导入的证书设置成下面验证的Trust Object的anchor certificate

    SecTrustSetAnchorCertificates(trust, (__bridge CFArrayRef)self.trustedCertificates);

    //2)SecTrustEvaluate会查找前面SecTrustSetAnchorCertificates设置的证书或者系统默认提供的证书,对trust进行验证

    OSStatus status = SecTrustEvaluate(trust, &result);

    if (status == errSecSuccess &&

    (result == kSecTrustResultProceed ||

    result == kSecTrustResultUnspecified))

    {

    //3)验证成功,生成NSURLCredential凭证cred,告知challenge的sender使用这个凭证来继续连接

    NSURLCredential *cred = [NSURLCredential credentialForTrust:trust];

    [challenge.sender useCredential:cred forAuthenticationChallenge:challenge];

    }

    else

    {

    //5)验证失败,取消这次验证流程

    [challenge.sender cancelAuthenticationChallenge:challenge];

    }

    }

    参考

    展开全文
  • CA (Certificate Authority) 是签名的根证书,用来签名后续创建的其它证书。CA 证书是集群所有节点共享的,只需要创建一次,后续用它签名其它所有证书。安装 cfssl 工具集使用 CloudFlare 的 ...

    如果没有特殊指明,所有操作均在 zhaoyixin-k8s-01 节点上执行。

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

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

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

    安装 cfssl 工具集

    使用 CloudFlare 的 PKI 工具集 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 <

    {

    "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 <

    {

    "CN": "kubernetes-ca",

    "key": {

    "algo": "rsa",

    "size": 2048

    },

    "names": [

    {

    "C": "CN",

    "ST": "BeiJing",

    "L": "BeiJing",

    "O": "k8s",

    "OU": "zhaoyixin"

    }

    ],

    "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

    参考

    展开全文
  • 独立根CA的安装与证书申请独立根CA与企业CA不同,独立CA不需要使用ActiveDirectory目录服务。独立CA最初是为了用作CA层次结构中的受信任的脱机根CA,或者是为了在涉及Extranet和Internet时使用。此外,如果想对CA...

    独立根

    CA

    的安装与证书申请

    独立根

    CA

    与企业

    CA

    不同,独立

    CA

    不需要使用

    Active Directory

    目录服务。独

    CA

    最初是为了用作

    CA

    层次结构中的受信任的脱机根

    CA

    ,或者是为了在涉及

    Extranet

    Internet

    时使用。此外,如果想对

    CA

    使用自定义的策略模块,您需要先安装

    独立

    CA

    然后再用您自定义的策略模块替代独立策略模块。

    向独立

    CA

    提交证书申请时,

    证书申请者必须在证书申请中明确提供所有关于自己

    的标识信息以及证书申请所需的证书类型。

    (向企业

    CA

    提交证书申请时无需提供这些信

    息,因为企业用户的信息已经在

    Active Directory

    中并且证书类型由证书模板说明)

    。申请

    所需的身份验证信息可从本地计算机的

    安全帐户管理器

    数据库中获取。

    默认情况下,

    发送到独立

    CA

    的所有证书申请都被设置为挂起,

    一直到独立

    CA

    管理员验证申请者的身份并批准申请。

    这完全是出于安全性的考虑,

    因为证书申请者的凭证

    还没有被独立

    CA

    验证。

    安装步骤:

    第一步:构建独立根

    CA

    服务器,我需要先安装

    IIS

    (证书服务安装过程中会在

    IIS

    的默认

    网站中写入虚拟目录,如果没有

    IIS

    的话,无法通过

    web

    浏览器的方式申请证书)

    ,然后再

    安装证书服务,配置过程如下:

    展开全文
  • 一 创建 CA 证书#!/bin/bashmkdir CAcd CAopenssl genrsa -out ca.key 4096// openssl req -new -x509 -days 3650 -key ca.key -out ca.crtopenssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=...

    一 创建 CA 证书

    #!/bin/bash

    mkdir CA

    cd CA

    openssl genrsa -out ca.key 4096

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

    openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=mogu/OU=CA/CN=mogu/emailAddress=admin@mogu.com"

    echo "1" > serial

    # Useage: sh createCA.sh

    二 签名域名

    #!/bin/bash

    mkdir ${1}

    cd ${1}

    echo "[ req ]

    default_bits = 4096

    distinguished_name = req_distinguished_name

    req_extensions = req_ext

    [ req_distinguished_name ]

    countryName = Country Name (2 letter code)

    countryName_default = CN

    stateOrProvinceName = State or Province Name (full name)

    stateOrProvinceName_default = Beijing

    localityName = Locality Name (eg, city)

    localityName_default = Beijing

    organizationName = Organization Name (eg, company)

    organizationName_default = www

    organizationalUnitName = Organizational Unit Name (eg, section)

    organizationalUnitName_default = IT

    commonName = Common Name (e.g. server FQDN or YOUR name)

    commonName_max = 64

    commonName_default = ${1}

    [ req_ext ]

    subjectAltName = @alt_names

    [alt_names]

    DNS.1 = ${1}

    " > san.conf

    openssl genrsa -out ${1}.key 4096

    openssl req -new -key ${1}.key -out ${1}.csr -config san.conf -sha256

    # serial 唯一

    serial=$(cat ../CA/serial)

    openssl x509 -req -days 3650 -in ${1}.csr -CA ../CA/ca.crt -CAkey ../CA/ca.key -set_serial $((serial+1)) -out ${1}.crt -extfile san.conf -extensions req_ext

    echo $((serial+1)) > ../CA/serial

    # Useage: sh signDoamin.sh localhost

    展开全文
  • 因为公共 CA (比如排名前几的这几家:Comodo, Symantec, GlobalSign, DigiCert, StartCom)颁发证书要收费,而且价格很贵。当然现在也有了像 Letsencrypt 这样的免费 CA。我们的应用是企业内网,域名使用私有域名,...
  • 证书加密(二):自建CA,证书加密,双向SSL分析 双向SSL的流程如上,综合来看,上面用到了CA根证书,client.key(客户端私钥),client.cer(客户端证书,包含公钥),server.key(服务端私钥),server.cer(服务端证书,...
  • 自建CA证书认证

    2020-04-05 11:18:10
    自建CA证书认证 CA证书认证通常包含三部分,CA认证服务器、业务服务器、客户端,也可以简单分成两部分CA/业务服务器,和客户端 CA服务器 生成私钥(pem) openssl genrsa -out cakey.pem -des 2048 gen:生成 rsa:...
  • debian自建CA证书

    2021-05-12 19:53:54
    新建 /etc/ca mkdir /etc/ca 配置openssl.cnf vim /etc/ssl/openssl.cnf 新建初始文件 第一步:touch index.txt 第二步:echo 01 > serial 第三步:mkdir ./newcerts 生成密钥 *注意:必须切换到/etc/ca...
  • openssl 自建CA,并签发证书

    千次阅读 2015-02-09 09:21:08
    注:为了更好管理自建CA,在下文中,为没有特殊说明的情况,CA根目录都是指的自建CA的根目录。 1. 创建CA根目录,并初始化一些文件: mkdir $HOME/myca cd $HOME/myca mkdir certs private conf echo "01" > ...
  • 为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,...CA服务器生成自己的密钥对,并颁发给自己一个证书(根证书) 在浏览器中加入此根证书,即信任由该机构颁发的证书 网站服务器生成自己...
  • 自己签发CA证书再签发服务器证书的场景非常简单。把根CA证书导入到浏览器后,就可以信任由这个...本文就来演示,CA,由CA签发二级CA,最后由二级CA签发网站证书 ---------------------------------------...
  • 原创文章,转发请注明出处java的keytool、单向验证、https等网上有很多教程,这里不再讲述,本篇文章着重讲述:1、go如何使用...第一步、生成根证书:opensslgenrsa -out ca.key 2048 opensslreq -x509 -new -n...
  • 首先在生成2个目录,一个存放CA中心根证书,另一个存放CA签发的应用证书 D:\CA D:\CA\appserver 进入D;\CA目录 1. 生成 CA 根证书库 keytool -genkey -alias CA -keypass CA123 -keyalg RSA -validity ...
  • 伪命令req大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA。由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明。若已熟悉openssl req和证书请求相关知识,可直接跳...
  • openssl req(生成证书请求和自建CA) 伪命令req大致有3个功能:生成证书请求文件、验证证书请求文件和创建CA。由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明。若已...
  • 生成 CA根证书(公钥)Step 5. 查看 CA 证书的内容Step 6. 生成 Server 证书密钥文件 & 证书签名请求Step 7. 签发 Server 证书 使用 OpenSSL 自建 CA 并签发证书 OpenSSL 是一个强大的安全套接字层密码库,...
  • 伪命令req大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA。 由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明。若已熟悉openssl req和证书请求相关知识,可直接...
  • 1、创建目录CA:存储私钥和证书文件 mkdir CA cd CA 2、生成CA私钥 cakey....3、生成CA根证书 cacert.pem openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365 需要填写自建CA机构”的资料...
  • 作者: 囧囧有神 链接:http://www.javaeye.com/topic/235905 发表时间: 2008年09月02日 Openssl版本:0.9.8 版本,可从http://www.openssl.org 处下载。...$home/testca # testca 是待建CA的主目录
  • 首先在安装之前要明白一些基本概念 1、SSL所使用的证书可以是自己的生成的,也可以通过...2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关
  • 如何实现自动安装根证书

    千次阅读 2009-07-20 15:44:00
     既然现在在windows下自建了一个CA,那么可以在windows下试试,呵呵,居然还成功了,真是高兴。 下面就是完整的原代码文件: $fp = fopen("D:/CARoot/ca.crt", "r"); $cert = fread($fp, 8192); fclose($fp
  • 1.安装CA证书服务器 开始菜单 > 管理工具 > 服务器管理器 选择左侧树形菜单“角色”节点,右键“添加角色”勾选“Active Directory 证书服务”,点“下一步”按钮 点击“下一步”按钮 点击“下一步”按钮,...
  • 通过openssl我们可以自建CA证书(不属于权威机构颁发的,但经常部署证书测试需要用到),用于颁发其他证书(用根证书的私钥对其他证书进行签名,从而保证其他证书的可信性)。 证书认证原理:根证书用自己的私钥签署了...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

自建ca根证书