精华内容
下载资源
问答
  • CA认证系统的设计

    2020-10-19 13:22:42
    CA认证是保证网上数据传输...本文给出一种方便有效的网上CA认证中心的搭建方式,重点讨论了CA认证中心证书的发布、认证、管理等问题,给出了一个包含CA认证中心和RA注册中心的完整CA认证系统的设计思想和具体实现方法。
  • CA认证系统

    2015-12-12 22:15:41
    简单的CA认证系统 C++代码 送给需要的朋友
  • 我国电子商务CA认证体系与风险防范分析,刘晓红,,数字身份认证(CA认证)是防范电子商务风险的重要方法。我国从2002年起开始电子商务数字身份认证工作,论文在简介我国电子商务CA认�
  • CA认证在医院互联网技术信息安全与运用中的研究.pdf
  • 介绍了用Java和0penSsL构建一个小型cA系统的方法。
  • java 使用CA认证

    千次阅读 2019-05-11 21:23:45
    CA认证原理以及实现 java CA证书制作和代码中使用 名词大意 秘钥库:存储了公钥和私钥信息,一个秘钥库可以存储多对的密钥对(密钥对可以理解为就是数字证书),通过alias别名来取出需要的密钥对,存放于服务器,xxx...

    本文转自:
    数字证书简介及Java编码实现
    CA认证原理以及实现
    java CA证书制作和代码中使用

    名词大意

    秘钥库:存储了公钥私钥信息,一个秘钥库可以存储多对的密钥对(密钥对可以理解为就是数字证书),通过alias别名来取出需要的密钥对,存放于服务器xxx.keystore文件
    数字证书:只能存储公钥,可以从xxxx.keystore中导出某个密钥对公钥证书,存放于客户端xxx.cer文件

    java使用数字证书

    Java 6提供了完善的数字证书管理实现,我们几乎无需关注,仅通过操作密钥库数字证书就可完成相应的加密解密签名验签过程。

    密钥库管理私钥数字证书管理公钥,公钥和私钥分属消息传递双方,进行加密消息传递

    CertificateCoder工具类

     /****
         * 获得私钥,获得私钥后,通过RSA算方法实现进行"私钥加密,公钥解密"和"公钥加密,私钥解密"操作
         * @param keyStorePath 密钥库路径
         * @param alias 别名
         * @param keystore_password 秘钥库密码
         * @param ca_password 证书密码
         * @return  私钥
         */
        private static PrivateKey getPrivateKeyByKeyStore(String keyStorePath, String alias, String keystore_password,String ca_password)throws Exception{
            //获得密钥库
            KeyStore ks = getKeyStore(keyStorePath,keystore_password);
            //获得私钥
            return  (PrivateKey)ks.getKey(alias, ca_password.toCharArray());
    
        }
    
        /****
         * 由Certificate获得公钥,获得公钥后,通过RSA算方法实现进行"私钥加密,公钥解密"和"公钥加密,私钥解密"操作
         * @param certificatePath  证书路径
         * @return 公钥
         */
        private static PublicKey getPublicKeyByCertificate(String certificatePath)throws Exception {
            //获得证书
            Certificate certificate = getCertificate(certificatePath);
            //获得公钥
            return certificate.getPublicKey();
        }
    
        /****
         * 加载数字证书,JAVA 6仅支持x.509的数字证书
         * @param certificatePath  证书路径
         * @return   证书
         * @throws Exception
         */
        private static Certificate getCertificate(String certificatePath) throws Exception{
            //实例化证书工厂
            CertificateFactory certificateFactory = CertificateFactory.getInstance("x.509");
            //取得证书文件流
            FileInputStream in = new FileInputStream(certificatePath);
            //生成证书
            Certificate certificate = certificateFactory.generateCertificate(in);
            //关闭证书文件流
            in.close();
            return certificate;
        }
    
        /****
         * 获得Certificate
         * @param keyStorePath 密钥库路径
         * @param alias 别名
         * @param keystore_password  秘钥库密码
         * @return  证书
         * @throws Exception
         */
        private static Certificate getCertificate(String keyStorePath,String alias,String keystore_password) throws Exception{
            //由密钥库获得数字证书构建数字签名对象
            //获得密钥库
            KeyStore ks = getKeyStore(keyStorePath,keystore_password);
            //获得证书
            return ks.getCertificate(alias);
        }
    
        /****
         * 加载密钥库,加载了以后,我们就能通过相应的方法获得私钥,也可以获得数字证书
         * @param keyStorePath 密钥库路径
         * @param keystore_password 密码
         * @return  密钥库
         * @throws Exception
         */
        private static KeyStore getKeyStore(String keyStorePath,String keystore_password) throws Exception{
            //实例化密钥库
            KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
            //获得密钥库文件流
            FileInputStream is = new FileInputStream(keyStorePath);
            //加载密钥库
            ks.load(is,keystore_password.toCharArray());
            //关闭密钥库文件流
            is.close();
            return ks;
        }
    
        /****
         * 私钥加密
         * @param data  待加密的数据
         * @param keyStorePath  密钥库路径
         * @param alias  别名
         * @param keystore_password   秘钥库密码
         * @param ca_password   证书密码
         * @return  加密数据
         * @throws Exception
         */
        public static byte[] encryptByPriateKey(byte[] data,String keyStorePath,String alias,String keystore_password,String ca_password) throws Exception{
            //获得私钥
            PrivateKey privateKey = getPrivateKeyByKeyStore(keyStorePath,alias,keystore_password,ca_password);
            //对数据加密
            Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
            cipher.init(Cipher.ENCRYPT_MODE,privateKey);
            return cipher.doFinal(data);
        }
    
        /****
         * 私钥解密
         * @param data  待解密数据
         * @param keyStorePath 密钥库路径
         * @param alias  别名
         * @param keystore_password   秘钥库密码
         * @param ca_password   证书密码
         * @return  解密数据
         * @throws Exception
         */
        public static byte[] decryptByPrivateKey(byte[] data,String keyStorePath,String alias,String keystore_password,String ca_password) throws Exception{
            //取得私钥
            PrivateKey privateKey = getPrivateKeyByKeyStore(keyStorePath,alias,keystore_password,ca_password);
            //对数据解密
            Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
            cipher.init(Cipher.DECRYPT_MODE,privateKey);
            return cipher.doFinal(data);
        }
    
        /****
         * 公钥加密
         * @param data  等待加密数据
         * @param certificatePath  证书路径
         * @return   加密数据
         * @throws Exception
         */
        public static byte[] encryptByPublicKey(byte[] data,String certificatePath) throws Exception{
            //取得公钥
            PublicKey publicKey = getPublicKeyByCertificate(certificatePath);
            //对数据加密
            Cipher cipher = Cipher.getInstance(publicKey.getAlgorithm());
            cipher.init(Cipher.ENCRYPT_MODE,publicKey);
            return cipher.doFinal(data);
        }
    
        /****
         * 公钥解密
         * @param data  等待解密的数据
         * @param certificatePath  证书路径
         * @return  解密数据
         * @throws Exception
         */
        public static byte[] decryptByPublicKey(byte[] data,String certificatePath)throws Exception{
            //取得公钥
            PublicKey publicKey = getPublicKeyByCertificate(certificatePath);
            //对数据解密
            Cipher cipher = Cipher.getInstance(publicKey.getAlgorithm());
            cipher.init(Cipher.DECRYPT_MODE, publicKey);
            return cipher.doFinal(data);
        }
    
        /****
         * @param sign  签名
         * @param keyStorePath 密钥库路径
         * @param alias 别名
         * @param keystore_password   秘钥库密码
         * @param ca_password   证书密码
         * @return 签名
         * @throws Exception
         */
        public static byte[] sign(byte[] sign,String keyStorePath,String alias,String keystore_password,String ca_password)throws Exception{
            //获得证书
            X509Certificate x509Certificate = (X509Certificate) getCertificate(keyStorePath,alias,keystore_password);
            //构建签名,由证书指定签名算法
            Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
            //获取私钥
            PrivateKey privateKey = getPrivateKeyByKeyStore(keyStorePath,alias,keystore_password,ca_password);
            //初始化签名,由私钥构建
            signature.initSign(privateKey);
            signature.update(sign);
            return signature.sign();
        }
    
    
        /****
         * 验证签名
         * @param data  数据
         * @param sign  签名
         * @param certificatePath  证书路径
         * @return  验证通过为真
         * @throws Exception
         */
        public static boolean verify(byte[] data,byte[] sign,String certificatePath) throws Exception{
            //获得证书
            X509Certificate x509Certificate = (X509Certificate)getCertificate(certificatePath);
            //由证书构建签名
            Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
            //由证书初始化签名,实际上是使用了证书中的公钥
            signature.initVerify(x509Certificate);
            signature.update(data);
            return signature.verify(sign);
        }
    

    CertificateCoderTest测试类

    /** 秘钥库密码. */
        private static final String keystore_password  = "123456";
        /** 证书密码. */
        private static final String ca_password   = "111111";
        /** 证书别名. */
        private static final String alias = "ljw";
        /** 密钥库文件. */
        private static final String keyStorePath = "F:\\Certifacate\\ljw.keystore";
        /** 数字证书文件. */
        private static final String certificatePath = "F:\\Certifacate\\ljw.cer";
    
        //我们假定密钥库文件yale.keystore存储在D盘根目录,数字证书文件yale.cer也存储在D盘根目录
        /****
         * 公钥加密---私钥解密
         * @throws Exception
         */
        @Test
        public void test1() throws Exception{
            System.err.println("公钥加密---私钥解密");
            String inputStr = "数字证书";
            byte[] data = inputStr.getBytes();
            //公钥加密
            byte[] encrypt = CertificateCoder.encryptByPublicKey(data, certificatePath);
            //私钥解密
            byte[] decrypt = CertificateCoder.decryptByPrivateKey(encrypt, keyStorePath, alias, keystore_password, ca_password);
            String outputStr = new String(decrypt);
            System.err.println("加密前:\n" + inputStr);
            System.err.println("解密后:\n" + outputStr);
        }
    
        /****
         * 私钥加密---公钥解密
         * @throws Exception
         */
        @Test
        public  void test2()throws Exception{
            System.err.println("私钥加密---公钥解密");
            String inputStr = "数字签名";
            byte[] data = inputStr.getBytes();
            //私钥加密
            byte[] encodedData = CertificateCoder.encryptByPriateKey(data, keyStorePath, alias, keystore_password, ca_password);
            //公钥解密
            byte[] decodeData = CertificateCoder.decryptByPublicKey(encodedData, certificatePath);
            String outputStr = new String (decodeData);
            System.err.println("加密前:\n" + inputStr);
            System.err.println("解密后:\n" + outputStr);
        }
    
        @Test
        public  void testSign()throws Exception{
            String inputStr = "签名";
            byte[] data = inputStr.getBytes();
            System.err.println("私钥签名---公钥验证");
            //产生签名
            byte[] sign = CertificateCoder.sign(data, keyStorePath, alias, keystore_password, ca_password);
            System.err.println("签名:\n" + sign);
            //验证签名
            boolean status = CertificateCoder.verify(data, sign, certificatePath);
            System.err.println("状态:\n " + status);
        }
    
    展开全文
  • Docker使用CA认证

    千次阅读 2020-02-03 17:54:56
    在idea中一键部署项目到Docker及CA认证 不使用 CA 认证的方法在 这里 本文直接开始介绍使用 CA 认证远程连接 docker,不使用 CA 认证也行,在自己的虚拟机里面可以这么干,但是放到联网的服务器上就不建议这么做了...

    在idea中一键部署项目到Docker及CA认证

    不使用 CA 认证的方法在 这里

    本文直接开始介绍使用 CA 认证远程连接 docker,不使用 CA 认证也行,在自己的虚拟机里面可以这么干,但是放到联网的服务器上就不建议这么做了,原因是,你把2375端口暴露在外面,意味着别人随时都可以提取到你服务器的root权限,是很容易被黑客黑的(笔者就是被当成了矿机的一例QwQ)。因此,docker官方推荐使用加密的tcp连接,以Https的方式与客户端建立连接

    官方demo

    下面就根据笔者的操作进行记录

    在 idea 中一键部署的操作我就不再赘述了,如果有不会的小伙伴可以到[这里](%5Bhttps://juneblog.online/articles/2020/01/13/1578924660386.html%5D(https://juneblog.online/articles/2020/01/13/1578924660386.html)来看,前面的步骤都是一样的,区别在后面我会标记出来以便查看。

    1.创建ca文件夹

    mkdir -p /usr/local/ca
    cd /usr/local/ca/
    

    2.创建 CA 私钥和公钥

    创建密码
    openssl genrsa -aes256 -out ca-key.pem 4096
    

    输出

    ...................++
    ..........................................................................................................................................................................................................................................................................................................................................................++
    e is 65537 (0x10001)
    Enter pass phrase for ca-key.pem:  # 此处输入密码
    
    Verifying - Enter pass phrase for ca-key.pem: # 此处输入密码
    
    依次输入密码、国家、省、市、组织名称等
    openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
    

    输出

    Enter pass phrase for ca-key.pem:
    Enter pass phrase for ca-key.pem:
    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) [XX]:CN
    State or Province Name (full name) []:zj
    Locality Name (eg, city) [Default City]:hz
    Organization Name (eg, company) [Default Company Ltd]:qdsg
    Organizational Unit Name (eg, section) []:qdsg
    Common Name (eg, your name or your server's hostname) []:qdsg
    Email Address []:1@qq.com
    
    生成 server-key.pem
    openssl genrsa -out server-key.pem 4096
    

    输出

    Generating RSA private key, 4096 bit long modulus
     ...........................++
     ................++
     e is 65537 (0x10001)
    
    把下面的$Host换成你自己服务器外网的IP或者域名
    openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
    比如
    openssl req -subj "/CN=192.168.1.106" -sha256 -new -key server-key.pem -out server.csr
    或
    openssl req -subj "/CN=www.baidu.com" -sha256 -new -key server-key.pem -out server.csr
    

    我这里使用阿里云服务器进行测试

    openssl req -subj "/CN=121.40.176.56" -sha256 -new -key server-key.pem -out server.csr
    
    配置白名单

    也就是你接下来要允许那些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用。如果你不想这样,那你可以配置ip,用逗号分隔开。下面的$Host依旧是你服务器外网的IP或者域名,请自行替换。

    注意!!!!这里我踩了坑
    如果你填写的是ip地址的话命令如下echo subjectAltName = IP: H O S T , I P : 0.0.0.0 > > e x t f i l e . c n f 如 果 你 填 写 的 是 域 名 的 话 命 令 如 下 e c h o s u b j e c t A l t N a m e = D N S : HOST,IP:0.0.0.0 >> extfile.cnf 如果你填写的是域名的话命令如下 echo subjectAltName = DNS: HOST,IP:0.0.0.0>>extfile.cnfechosubjectAltName=DNS:HOST,IP:0.0.0.0 >> extfile.cnf

    这里我使用ip

    echo subjectAltName = IP:121.40.176.56,IP:0.0.0.0 >> extfile.cnf
    
    执行命令,将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
     echo extendedKeyUsage = serverAuth >> extfile.cnf
    
    执行命令,并输入之前设置的密码,生成签名证书
    openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf
    

    输出

    Signature ok
    subject=/CN=192.168.1.106
    Getting CA Private Key
    Enter pass phrase for ca-key.pem: # 此处输入密码
    
    
    生成客户端的key.pem,到时候把生成好的几个公钥私钥拷出去即可
    openssl genrsa -out key.pem 4096
    

    输出

    Generating RSA private key, 4096 bit long modulus
    ...........................................................................................................................................................................................................................................................................................................................................................................++
    ......................................................................................................................................++
    e is 65537 (0x10001)
    
    执行命令
    openssl req -subj '/CN=client' -new -key key.pem -out client.csr
    
    执行命令,要使密钥适合客户端身份验证,请创建扩展配置文件
    echo extendedKeyUsage = clientAuth >> extfile.cnf
    
    生成cert.pem,需要输入前面设置的密码,生成签名证书
    openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
    

    输出

    Signature ok
    subject=/CN=client
    Getting CA Private Key
    Enter pass phrase for ca-key.pem: # 此处输入密码
    
    删除不需要的文件,两个证书签名请求
    rm -v client.csr server.csr
    

    输出

    rm:是否删除普通文件 "client.csr"?y
    已删除"client.csr"
    
    修改权限,要保护您的密钥免受意外损坏,请删除其写入权限。要使它们只能被您读取,更改文件模式
    chmod -v 0400 ca-key.pem key.pem server-key.pem
    

    输出

    mode of "ca-key.pem" changed from 0644 (rw-r--r--) to 0400 (r--------)
    mode of "key.pem" changed from 0644 (rw-r--r--) to 0400 (r--------)
    mode of "server-key.pem" changed from 0644 (rw-r--r--) to 0400 (r--------)
    
    证书可以是对外可读的,删除写入权限以防止意外损坏
    chmod -v 0444 ca.pem server-cert.pem cert.pem
    

    输出

    mode of "ca.pem" changed from 0644 (rw-r--r--) to 0444 (r--r--r--)
    mode of "server-cert.pem" changed from 0644 (rw-r--r--) to 0444 (r--r--r--)
    mode of "cert.pem" changed from 0644 (rw-r--r--) to 0444 (r--r--r--)
    

    3. docker 及 idea 的配置

    归集服务器证书
    cp server-*.pem  /etc/docker/
    cp ca.pem /etc/docker/
    # 以上两步操作都在ca文件夹内,如果当前不在ca文件夹,需加上路径
    
    修改Docker配置,使Docker守护程序仅接受来自提供CA信任的证书的客户端的连接
    vim /lib/systemd/system/docker.service
    

    添加如下代码到配置文件中

              --tlsverify --tlscacert=/etc/docker/ca.pem \
              --tlscert=/etc/docker/server-cert.pem \
              --tlskey=/etc/docker/server-key.pem \
              -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
    

    在这里插入图片描述

    重新加载daemon并重启docker
    systemctl daemon-reload 
    systemctl restart docker
    
    开放2375端口,我用的是阿里云服务器,所有到安全组里去开放端口
    /sbin/iptables -I INPUT -p tcp --dport 2376 -j ACCEPT
    
    查看信息
     iptables-save
    

    输出 (这里每个人输出的可能都不一样,但不影响)

    # Generated by iptables-save v1.4.21 on Mon Feb  3 17:03:02 2020
    *nat
    :PREROUTING ACCEPT [310:18366]
    :INPUT ACCEPT [172:10086]
    :OUTPUT ACCEPT [3256:251253]
    :POSTROUTING ACCEPT [3299:253557]
    :DOCKER - [0:0]
    -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
    -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
    -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 3306 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p tcp -m tcp --dport 443 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p tcp -m tcp --dport 80 -j MASQUERADE
    -A POSTROUTING -s 172.17.0.4/32 -d 172.17.0.4/32 -p tcp -m tcp --dport 12345 -j MASQUERADE
    -A DOCKER -i docker0 -j RETURN
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.17.0.2:3306
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.17.0.3:443
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.3:80
    -A DOCKER ! -i docker0 -p tcp -m tcp --dport 12345 -j DNAT --to-destination 172.17.0.4:12345
    COMMIT
    # Completed on Mon Feb  3 17:03:02 2020
    # Generated by iptables-save v1.4.21 on Mon Feb  3 17:03:02 2020
    *filter
    :INPUT ACCEPT [13385:2320047]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [34319:6861761]
    :DOCKER - [0:0]
    :DOCKER-ISOLATION - [0:0]
    -A INPUT -p tcp -m tcp --dport 2375 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 2376 -j ACCEPT
    -A FORWARD -j DOCKER-ISOLATION
    -A FORWARD -o docker0 -j DOCKER
    -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
    -A FORWARD -i docker0 -o docker0 -j ACCEPT
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3306 -j ACCEPT
    -A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT
    -A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
    -A DOCKER -d 172.17.0.4/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 12345 -j ACCEPT
    -A DOCKER-ISOLATION -j RETURN
    COMMIT
    # Completed on Mon Feb  3 17:03:02 2020
    
    重启 docker
    service docker restart
    
    保存相关客户端的pem文件到本地

    这里我使用的是 lrzsz(Linux服务器和window互传文件工具)传的,使用方法可以参考这里

    sz ca.pem cert.pem key.pem 
    

    在这里插入图片描述

    idea 的配置

    在这里插入图片描述

    注意!如果没有将 tcp 替换成 https 将会出现 IOE 异常,届时请检查以下配置是否正确!

    总结:之前笔者是没有使用 CA 认证且直接开放 2375 端口进行 idea 一键部署,之后各种不速之客纷纷来我服务器进行参观,啃食我的cpu,让我服务器的运行速度直接-99999,我是花了好大的力气才把他们全赶出去了,差点就 reset 服务器了,也是这次血的教训让我才意识到服务器安全的重要性。



    本文参考自点我的博客,并以自己的实践进行记录,感谢原博主!!



    有什么问题大家可以在下面评论区进行交流

    展开全文
  • CA认证,即电子认证服务 [1] ,是指为电子签名相关各方提供真实性、可靠性验证的活动。证书颁发机构(CA Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中...
  • 吉大正元CA认证服务器与客户端以及配置文档,有服务器和客户端,有配置文档,一般人都可以看得懂。
  • CA认证及http实现方法

    千次阅读 2019-12-12 19:22:30
    1 数字证书认证过程: 证书请求文件:CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把...

    1 数字证书认证过程:

    证书请求文件:CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书的私钥签名就生成了证书文件,也就是颁发给用户的证书。

    1.1用户使用CA证书确认服务器身份过程

    在这里插入图片描述
    1、请求文件发给yunzu63 CA认证中心
    2、CA认证 (用CA的私钥加密yunzu64的请求文件), 得到加密后的文件,这个文件就是yunzu64的证书
    ),CA认证中心颁发给yunzu64加密后的数字证书
    3、用户访问yunzu64并向yunzu64索要数字证书
    4、用户拿到数字证书后,用浏览器中CA的公钥解密yunzu64的证书,解开后得到yunzu64的公钥和标识(主机名,国家,省,组织等信息),从而确认yunzu64的身份。

    2 搭建CA认证中心

    2.1 安装CA认证软件包中心:
    [root@yunzu63]#rpm -qf `which openssl `
    openssl-1.0.2k-8.el7.x86_64
    
    2.2 配置一个自己的CA认证中心。生成CA的根证书和私钥。 根证书中包括:CA的公钥

    [root@yunzu63 CA]# vim /etc/pki/tls/openssl.cnf
    改: 172 #basicConstraints=CA:FALSE
    为:172 basicConstraints=CA:TRUE #让自己成为CA认证中心

    2.3 生成CA的公钥证书和私钥

    [root@yunzu63 CA]# /etc/pki/tls/misc/CA -h #查看帮助
    usage: /etc/pki/tls/misc/CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify

    选项 :
    -newcert 新证书
    -newreq 新请求
    -newreq-nodes 新请求节点
    -newca 新的CA证书
    -sign 签证
    -verify 验证

    [root@yunzu63 ~]# /etc/pki/tls/misc/CA -newca

    CA certificate filename (or enter to create) #直接回车
    Making CA certificate ...
    Generating a 2048 bit RSA private key
    
    ....................+++
    ..........................................................................+++
    
    writing new private key to '/etc/pki/CA/private/./cakey.pem'
    Enter PEM pass phrase:123456   # 输入密码,保护私钥
    Verifying - Enter PEM pass phrase:123456  #再次输入密码
    
    -----
    
    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) [XX]:CN
    State or Province Name (full name) []:xian
    Locality Name (eg, city) [Default City]:yata
    Organization Name (eg, company) [Default Company Ltd]: yunzu
    Organizational Unit Name (eg, section) []:IT
    Common Name (eg, your name or your server's hostname) []:yunzu63.cn     #普通名称(例如,您的姓名或您的服务器的主机名),随便写. 指定CA认证中心服务器的名字
    Email Address []:123456@163.com
    Please enter the following 'extra' attributes   
    to be sent with your certificate request      #添加一个“额外”的属性,让客户端发送CA证书,请求文件时,要输入的密
    A challenge password []:    #直接加车
    An optional company name []:  #直接加车
    Using configuration from /etc/pki/tls/openssl.cnf    # CA服务器的配置文件。上面修改的       内容会添加到这个配置文件中
    Enter pass phrase for /etc/pki/CA/private/./cakey.pem: 123456       #输入刚才保护CA私钥的密码
    Check that the request matches the signature
    Signature ok
    Certificate Details:
             Serial Number:
                            c9:16:bb:49:48:20:ed:16
            Validity
                Not Before: Dec 20 12:00:19 2014 GMT
                Not After : Dec 19 12:00:19 2017 GMT
            Subject(主题):
                countryName               = CN
                stateOrProvinceName       = xian
                organizationName          = yunzu
                organizationalUnitName    = IT
                commonName                = jiajia    
                emailAddress              = 123456@163.com
            X509v3 extensions:
                X509v3 Subject Key Identifier:             BF:E3:16:CC:EB:42:BD:6D:56:8E:A4:21:70:E6:72:40:0C:77:C0:C0
                X509v3 Authority Key Identifier: 
    keyid:BF:E3:16:CC:EB:42:BD:6D:56:8E:A4:21:70:E6:72:40:0C:77:C0:C0
                X509v3 Basic Constraints: 
                    CA:TRUE
    Certificate is to be certified until Dec 19 12:00:19 2017 GMT (1095 days)
    Write out database with 1 new entries
    Data Base Updated
    到此CA认证中心就搭建好了。
    
    
    2.4 查看生成的CA根证书,根证书中包括CA公钥:
    [root@yunzu63 CA]#vim /etc/pki/CA/cacert.pem 
    Certificate:
                    Data:
                 Version: 3 (0x2)
                 Serial Number:
                c0:1d:ed:ba:fc:7e:b4:40
            Signature Algorithm: sha1WithRSAEncryption
            Issuer: C=CN, ST=beijing, O=yunzu, OU=IT, CN=shenjianming/emailAddress=1@1
    63.com  #CA 机构信息
            Validity
                Not Before: May  9 11:54:20 2015 GMT
                Not After : May  8 11:54:20 2018 GMT
            Subject: C=CN, ST=beijing, O=yunzu, OU=IT,                  
    CN=shenjianming/emailAddress=1@
    163.com
            Subject Public Key Info:   #CA认证中心公钥信息
                Public Key Algorithm: rsaEncryption
                    Public-Key: (2048 bit)
                    Modulus:
    
    2.5 查看根证书的私钥
    [root@yunzu63 CA]# vim /etc/pki/CA/private/cakey.pem 
    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI2JxR6+eEWI0CAggAMBQGCCqGSIb3DQMHBAjjVO7+mmTUuwSCBMil6B4xGLDfbskPQd++sEtyMtV8Y62lGztBjiSSNCE0amDVvhi5hG5dZpq9i/ik1Jh31DQ6siet10vm7/EZC4KSqagDsi66
    

    3 使用证书搭建https

    安装:httpd在yunzu64上配置https 步骤:
    1、安装:httpd web服务器
    2、yunzu64生成证书请求文件,发给yunzu63 CA认证中心进行签名,yunzu63下发证书 给yunzu64
    3、把证书和httpd相结合,实现https
    4、测试https认证效果

    3.1 安装:httpd web服务器

    [root@yunzu64 ~]# yum install httpd -y
    [root@yunzu64 ~]# vim /etc/httpd/conf/httpd.conf
    改:#ServerName www.example.com:80
    为:ServerName 192.168.1.64:80

    [root@yunzu64 ~]# systemctl start httpd
    [root@yunzu64 ~]# iptables -F

    3.2 yunzu64生成证书请求文件,获得证书
    生一个私钥密钥(此时还没有生成公钥):
    [root@yunzu64 ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key
    参数:-des3   encrypt the generated key with DES in ede cbc mode (168 bit key) #加密      一下私钥
    Generating RSA private key, 512 bit long modulus
    
    .....++++++++++++
    
    ..............................++++++++++++
    
    e is 65537 (0x10001)
    Enter pass phrase for /etc/httpd/conf.d/server.key:123456  #输入保护私钥的密码,保护私    钥时,使用的加密算法是 -des3
    Verifying - Enter pass phrase for /etc/httpd/conf.d/server.key: 123456
    注: 有私钥可以推出来公钥。  但是公钥不可以推出私钥。公钥由私钥生成
    
    
    3.3 使用私钥生成证书请求文件
    [root@yunzu64 ~]# openssl req -new -key /etc/httpd/conf.d/server.key    -out  /server.csr    #注意后期添加的国家,省,组织等信息要和CA保持一致
    Enter pass phrase for /etc/httpd/conf.d/server.key:123456  #输入私钥的密码
    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) [XX]:CN
    State or Province Name (full name) []:xian
    Locality Name (eg, city) [Default City]:yanta
    Organization Name (eg, company) [Default Company Ltd]:yunzu
    Organizational Unit Name (eg, section) []:IT
    Common Name (eg, your name or your server's hostname) []:yunzu64.cn 
    #这里要求输入的CommonName必须与通过浏览器访问您网站的 URL 完全相同,否则用户会发       现您服务器证书的通用名与站点的名字不匹配,用户就会怀疑您的证书的真实性。可以使域名也可以     使IP地址。
    Email Address []:123456@163.com
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:    #不输密码直接回车
    An optional company name []:
    注:证书请求文件中有yunzu64的公钥。  这个公钥是在生成证书请求文件时,通过指定的私钥          /etc/httpd/conf.d/server.key生成的。 
    常识: 通过私钥可以生成公钥的,通过公钥不可以推出来私钥。
    
    
    3.4 将证书请求文件发给CA服务器:

    [root@yunzu64 ~]# scp /server.csr 192.168.1.63:/tmp/

    3.5 CA签名:
    [root@yunzu63 CA]# openssl ca -h
    [root@yunzu63 ~]# openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert  /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt 
    
    
    Using configuration from /etc/pki/tls/openssl.cnf
    Enter pass phrase for /etc/pki/CA/private/cakey.pem:123456
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number:
                ce:60:e0:a3:fe:ee:88:09
            Validity
                Not Before: Dec 21 14:25:53 2014 GMT
                Not After : Dec 21 14:25:53 2015 GMT
            Subject:
                countryName               = CN
                stateOrProvinceName       = xian
                organizationName          = yunzu
                organizationalUnitName    = IT
                commonName              = yunzu64.cn
                emailAddress               = 123456@163.com
            X509v3 extensions:
                X509v3 Basic Constraints: 
                    CA:TRUE
                Netscape Comment: 
                    OpenSSL Generated Certificate
                X509v3 Subject Key Identifier: 
              1B:30:0B:28:4A:31:EA:FC:05:7D:54:A3:87:A0:6E:BE:F8:D6:3C:F8
                X509v3 Authority Key Identifier:            keyid:6D:0F:0C:C5:96:32:A8:8B:D3:FF:36:39:5B:14:5B:9B:31:12:4A:C3
    Certificate is to be certified until Dec 21 14:25:53 2015 GMT (365 days)   #证书有效期是365天。证书进行认证,直到12月21日十四时25分53秒格林尼治标准时间2015年(365天)
    Sign the certificate? [y/n]:y    #注册证书
    1 out of 1 certificate requests certified, commit? [y/n]y  #确认
    Write out database with 1 new entries
    Data Base Updated
    
    
    3.6 将证书复制到yunzu64

    [root@yunzu63 CA]# scp /server.crt 192.168.1.64:/

    4 使用证书实现https

    SSL:(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)。
    注:SSL作用,可以让你在一个不安全的公网环境中,安全传输你的密钥。

    SSL应用情景:
    在这里插入图片描述
    存在安全隐患: 客户端和服务器之间传输数据时,如果何保证数据的安全? 加密!
    问题:这个密码如何在不安全的公网环境中,安全的传输给你?
    在这里插入图片描述
    SSL四次握手安全传输:
    加密协议: SSL 3.0 或 TLS 1.0
    C -------------------------------------------------> S
    1. 客户端请求一个安全的会话,协商加密算法
    C <------------------------------------------------- S
    2. 服务端将自己的证书传给客户端
    C -------------------------------------------------> S
    3. 客户端用浏览中存放CA的根证书检测yunzu64证书,确认yunzu64是我要访问的网站。
    客户端使用CA根证书中的公钥解密yunzu64的证书,从而得到yunzu64的公钥;
    然后客户端生成一把对称的加密密钥,用yunzu64的公钥加密这个对称加密的密钥发给yunzu64。 后期使用对称密钥加密数据
    C <------------------------------------------------> S
    4. yunzu64使用私钥解密,得到对称加密的密钥。从而,使用对称加密密钥来进行安全快速传输数据
    注:这里使用对称加密数据,是因为对称加密和解密速度快
    总结:过程1: 确认身份。 过程2:生成一把对称加密密钥,传输数据

    配置:
    [root@yunzu64 ~]# cp /server.crt /etc/httpd/conf.d/ #复制证书
    [root@yunzu64 ~]# ls /etc/httpd/conf.d/server.key #查看私钥
    /etc/httpd/conf.d/server.key

    [root@yunzu64 ~]# vim /etc/httpd/conf.d/ssl.conf
    改:100 SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    为:
    SSLCertificateFile /etc/httpd/conf.d/server.crt
    改:108 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    为:
    SSLCertificateKeyFile /etc/httpd/conf.d/server.key

    启动服务:
    [root@yunzu64 ~]# systemctl restart httpd
    Enter SSL pass phrase for yunzu64.cn:443 (RSA) : 1123456 #httpd私钥密码

    测试:
    查看端口:
    [root@yunzu64 ~]# netstat -antup | grep 443
    tcp 0 0 :::443 ::😗 LISTEN 5138/httpd
    18.4.2 测试https效果
    访问:https://192.168.1.64/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • CA认证技术的研究与设计

    千次阅读 2018-09-19 00:01:34
    并非原创 课程设计(论文)说明书 题 目: CA认证技术的研究与设计 学 院: 计算机科学与技术学院 专 业: 网络工程 姓 名: 全志伟 学 号: 20154360109 ...

    并非原创

     

     

     

     课程设计(论文)说明书

     

     

     

     

    题    目:  CA认证技术的研究与设计 

             

     

    学    院:   计算机科学与技术学院 

    专    业:         网络工程        

    姓    名:          xxx         

    学    号:        2015436xxxx      

    指导教师:          刘朝晖        

     

     

     

     

     

    2018年   6月  13 日

     

     

    目录

    目录. II

    1.  前言. 1

    1.1选题背景. 1

    1.2选题目标. 1

    2.  CA认证技术的简介. 2

    2.1 CA认证的概念. 2

    2.2 CA认证技术实现的原理基础. 2

    2.3 CA认证技术的作用. 2

    3.  系统框架描述. 4

    3.1 系统总体架构. 4

    3.2 主要功能. 4

    3.3 电子商务的核心模块. 5

    3.4 主要用到的技术. 5

    3.4.1网络安全技术. 5

    3.4.2 数据加密技术. 6

    3.4.3 认证技术. 6

    4.详细设计. 7

    4.1方案的总体要求与设计思想. 7

    4.2 CA的总体结构. 8

    4.3 CA系统功能的实现. 9

    4.3.1 证书的申请. 9

    4.3.2 证书的发放. 9

    4.3.3 证书的查询. 10

    4.3.4 证书的撤销. 10

    4.4 证书管理系统的设计. 10

    4.4.1 服务器端证书管理系统. 10

    4.4.2 客户端证书管理系统. 11

    4.5 系统实现工具简介. 13

    4.5.1 JAVA语言. 13

    4.5.2 OpenSSL语言. 13

    4.5.3具体实现. 14

    4.6 系统安全设计. 14

    4.6.1物理安全和环境安全. 14

    4.6.2网络安全设计. 14

    4.6.3 通信安全性设计. 14

    5.搭建环境及编译. 16

    5.1搭建环境. 16

    5.2 搭建步骤及其代码. 16

    6.运行结果. 19

    论文总结. 23

    参考文献. 24

     

    1.  前言

    1.1选题背景

        随着信息化进程的深入和互联网的迅速,信息安全显得日益重要。国家对此十分重视,1997年国务院信息办立项筹建互联安全产品测评认证中心;1998年10月成立中国国家信息安全测评认证中心;1999年2月该中心及其安全测评实验室分别通过中国产品质量认证机构国家认可委员会和中国实验室国家认可委员会的认可,正式对外开展信息安全测评认证工作。

    近十年来,伴随着现代网络技术不断的发展,internet已经潜移默化的深入人们的生活,无论是工作,还是日常化的生活都与网络紧密的结合在一起。而在这发展的过程中,对信息的保护已经成为当今社会的一个很严峻的问题。为了确保在网上交易过程中信息不被泄漏,就必须建立一种可以信任的机制来保证传输数据的认证、完整性、机密性以及不可否认性,数字正式就是应这种要求而出现的。

    数字证书是各实体在网上信息交流及商务交易活动中的身份证明,它是实现一个公匙与某一实体之间的相互绑定。为了实现这种绑定关系,需要一组可以信赖的第三方来担保用户之间的身份。第三方实体称为认证中心(Certificate Authority,CA),它提供的功能主要有颁发证书、更新证书、查询证书、归档证书和作废证书。

    1.2选题目标

    随着internet的不断发展,电子商务已经受到越来越多的青年人的青睐,与此同时,为人们带来无限商机的同时,世界各地也在面对着一个共同的障碍——电子商务网络支付的安全理由。
      CA认证系统是专门为了提高网上交易的安全而出现的。CA认证虽然不直接参加买卖双方之间的交易,但由于它的原理是买卖双方共同信任的机构,在交易的过程中起着不可替代的作用,使之成为整个电子商务中最为关键的组成部分。

       现在的网上交易过程中,如何解决交易过程的正当性与交易双方的身份有效性,变得非常重要。CA认证机构(certificate Authority)是整个网上电子交易安全的最为关键环节,它主要负责产生、治理及分配所有在网上交易时需要身份认证的数字证书,为解决用户信任题目,在交易的各个环节中,交易双方都需要检验对方数字证书的有效性,所以,认证机构发放的证书一定要具有权威性、公证性以及不可抵赖性。CA是公钥基础设施的核心,是证书的签发机关,为客户提供签发公钥证书、认证证书、分配证书和治理证书的服务。CA将客户的公钥与客户的名称及其它属性关联起来,并制定政策和识别用户身份,具体步骤来验证、再对用户证书进行签名验证,确保证书持有者的身份和公钥的拥有权。

     

     

    2.  CA认证技术的简介

    2.1 CA认证的概念

    CA(Certificate Authority)是证书授权的意思,是负责签发认证、签发、管理证书的机关,是合法的、中立的、权威的、公正的第三方电子认证中心。给个人、企事业单位和政府机构签发数字证书,是用来确认电子商务活动中各自的身份,并通过加密解密策略来实现网上安全的信息交换与安全交易。CA(Certificate Authority)是指发放、管理、废除数字证书的机构。CA的作用是检查证书持有者身份的合法性,并签发证书,对证书和密钥进行管理,保证证书不被伪造或篡改。数字证书实际上是存于计算机上的一个记录,是由CA签发的一个声明,证明证书主体与证书中所包含的公钥的惟一对应关系。证书包括证书申请者的名称及相关信息、申请者的公钥、签发证书的CA的数字签名及证书的有效期等内容。数字证书的作用是保证电子商务的安全进行并且对双方网上交易进行互相验证身份。CA是基于非对称加密体系建立的电子商务安全认证机构。

    2.2 CA认证技术实现的原理基础

         数字证书为发布公钥提供了一种简便的途径, 它则成为公钥的载体以及加密算法,通过建立数字证书,可以构建出一个简单的加密网络应用平台,网络用户的身份凭证由数字证书颁发CA认证机构。只有经过CA签发的证书才具备可认证性,CA并不是一个单纯的防御手段,它集合了多种密码学算法:
    消息摘要算法:SHA、MD5(对数字证书进行摘要处理,验证数据完整性服务器)
    数字签名算法:DSA、RSA(对数据进行签名或者进行验证操作,保证数据的完整性和不可抵赖性)。

    对称性加密算法:RC2、RC4、AES、DES、IDEA、(为了保证数据保密性服务,对数据进行加密或者解密操作)
    非对称性加密算法:RSA、DH(为了保证数据保密性服务,对数据进行加密或者解密操作。)
    证书的验证过程实际上是对数字证书的公钥做验证签名,证书的签发过程实际上是对申请数字证书的公钥做数字签名,其中还包括了证书有效期,我们通过CA数字证书来对网络上传输的数据进行加密或者解密和签名或者验证等操作,保证数据的机密性、完整性、不可抵赖性、认证性,确保电子商务交易过程中的真实性和网络安全
    性。

    2.3 CA认证技术的作用

    2.3.1维护数据的保密性
      借助CA认证机构签发的数字认证证书可以更好的防止非法用户进入系统及合法用户对系统资源的非法使用。运用包含公开密钥加密法、私人密钥加密法、哈希函数加密法及数字信封技术等一系列技术手段,对一些较为机密的数据文件进行加密,保证使发送过程中的加密数据不会被第三方窃取,即使不小心被他人获取文件,也无法破译其中的内容,从而保证交换数据的传递的安全性。
     

    2.3.2验证双方身份的真实性
      电子商务毕竟不是面对面的交易,很难辨析交易对象的真实性,因而对交易双方身份的真实性验证显得非常重要。借助于CA认证中心的口令、电子签名技术和公开密钥,经过证书服务系统认证后,取得数字证书是交易用户在互联网上的电子身份证,它能有效鉴别特定用户的登记情况、经营情况和资信情况,建立交易当事人相互之间的信任。
     

    2.3.3保证信息的完整性
      为了防止在交易结束后,当事人否认自己所做过的交易,从而给双方造成不必要的损失。通过CA认证Hash函数的电子签名技术和数字证书技术,即可以实现信息的完整性辨析。因为CA机构所签发的数字证书只被所标识的信息的当事人唯一拥有,故利用其数字证书在传送前,对交易信息进行电子签名,便可证明交易信息是最初信息发送人所发送的,发送者无法否认发送过程中该交易信息进行过该项交易活动。保证了信息的完整性。

     

    3.  系统框架描述

    3.1 系统总体架构

     

    一个简单的证书机构签发的流程主要由:业务系统、CA数字证书受理系统、数字签名认证系统三大部分组成。

    系统的总体架构如下图所示,

     

    3.2 主要功能

    (1) 签发自签名的根证书;
    (2) 审核和签发其他CA认证系统的交叉认证证书;
    (3) 向其他CA系统申请交叉认证证书;
    (4) 受理和审核各RA机构的申请;
    (5) 为RA机构签发申请;
    (6) 接受并处理各RA服务器的证书业务申请;
    (7) 管理全系统的用户和证书资料;
    (8) 签发业务证书和证书作废表;
    (9) 维护全系统的证书作废表;
    (10) 维护全系统的查询。

     

    3.3 电子商务的核心模块

        电子商务的安全体系由网络服务层、加密技术层、安全认证层、安全协议层、应用系统层共同组成。下层是上层的基础,为上层提供技术支持;上层是下层的扩展与递进。各层次之间相互依赖、相互关联构成从而统一的整体。通过合理应用各层控制技术,并进行有机结合,那么就可实现电子商务系统的安全,从而进一步确保电子商务活动的有效性、保密性、完整性和不可抵赖性。

     

    3.4 主要用到的技术

     

    3.4.1网络安全技术

     

    ①防火墙技术

        防火墙技术是安全访问控制技术,主要作用是保护网络环境不安全的情况下实现局部网络的安全性。目前的电子商务系统中都普遍采用了防火墙技术,是因为它在外部和内部网络之间构造了一个可靠的保护层,只有在授权合法的情况下才能进行对内部的网络资源进行访问,有效的防止了外部互联网进行的破坏。

    ②虚拟专用网(VPN)技术

    VPN技术可以帮助用户及供应商之间建立可以信赖的安全连接,从而保证了数据的安全传输。通过附加的安全隧道、访问控制和用户认证等技术实现与专用网络的安全性能。

     

    3.4.2 数据加密技术

        数据加密的定义是对信息进行重新编码,从而达到信息内容的隐藏,让非法用户不能获取信息真实内容,它是电子商务中采用的主要安全措施。

     

    3.4.3 认证技术

        认证技术是防止信息被篡改、删除、重放和伪造的一种有效方法。它使接收

    者能够识别和确认消息的来源和真伪,从而保证了信息的真实性。

     

    4.详细设计

        伴随着电子商务的信息时代的到来,CA认证中心在确认通信双方身份的真实可靠性起着重要的作用,广泛应用于电子商务交易以及网上证券交易等领域。尤其是在目前网上电子商务上,不再是局限于顾客和销售商之间的商业行为(BtoC),而是企业和企业之间的交易行为(BtoB)逐渐增多,这就使得在企业或行业内部必须设立一个可以彼此信赖的CA认证系统。有了适合自己规模的CA,企业便可灵活地设置CA系统的不同部分以及功能,做出必要的简化和改进,从而去适应现代社会发展的道路。本文对电子商务安全认证技术的基础进行了学习分析;借助公钥基础设施PKI中数字证书和CA功能介绍的相关知识点,在此基础上提出构建一个基于电子商务模型的CA认证系统的实现方案。该设计方案可用于中小型企业内部构建自己的CA,具有普适性且易实现。

     

    4.1方案的总体要求与设计思想

     

        方案的总体要求与设计思想CA系统作为整个电子商务系统安全性的核心,承担着身份审核、证书签发、交易认证等重要服务。为维护CA中心的权威性和公正性,技术上必须采用先进的设计方法。加密技术是数字证书的核心,所采用的加密技术应考虑先进性、业界标准和普遍性,同时,为使数字证书能实现可互操作性,需要与主要的Internet安全协议兼容以支持多应用环境。本系统在严格遵守ITU的X.509标准的基础上,设计一个具有较高安全性的认证中心,该中心在技术上力求达到:

    1. 保证系统的先进性和可扩展性,使之既能满足当前证书应用的需求,又能满足以后业务扩展的需求;

    (2)采用当前最流行和最可靠的加密算法和网络安全技术,保证系统具有较高的安全性;

    (3)具有数字签名功能,实现发送者对信息的数字签名,提供交易过程的不可否认性和防抵赖性;

    (4)完整的证书管理功能,透明地提供证书的有效期管理、安全的密钥管理等功能;

    (5)全程证书历史档案管理,支持全程审计功能.对每次交易加密、传输等都保留记录以备审计查询;

    (6)提供证书的多种存储方式,保证系统运行的高效与安全;为达到本系统的设计要求,拟从以下几方面对系统进行设计:

    (1)采用LDAP服务器作为证书管理和CRL管理服务器。LDAP服务器支持大容量的读请求,并为读密集型的操作进行了专门的优化;同时也提供了复杂的不同层次的ACL(一般都称为ACL或者访问控制列表)来控制对数据读和写的权限,保证了较高的安全性和可靠性;LDAP协议是跨平台的和标准的协议,因此应用程序就不用为LDAP目录放在什么样的服务器上操心了。

    (2)为保证系统的可扩展性,支持交叉认证,使之既能满足当前小范围内CA认证需求,又能满足今后大范围多种CA系统间的域间交叉认证的需求;

    (3)身份认证、密钥管理以及数据的完整性采用可靠性高的RSA算法,指示加密采用DES算法,采用Hash消息摘要及RSA数字签名算法。加密公钥和私钥长度可为512,1024或更高。

    (4)实现公钥/私钥的生成、用户证书申请、证书签发、证书吊销、证书验证、密钥存储等功能。

    (5)为用户提供功能完善的客户端管理,方便用户管理和使用证书。支持用户自己证书的申请、下载、查询、更新等,同时能对他人证书进行查询及下载;

    (6)提供证书及密钥的多种存储方式;

    (7)制定CA中心的安全管理策略和安全规范及措施。

     

    4.2 CA的总体结构

       

        本认证中心主要负责在一个安全域内的有限群体发放证书,同时还负责维护

    和发布证书发放列表CRL(Certificate Revocation Iists)。硬件设施包括:安全服务器、CA 服务器、登记中心服务器(RA 服务器)、LDAP服务器、CA 管理服务器。它们的功能如下:

    安全服务器:安全服务器面向普通用户,用于提供证书申请、浏览、证书撤

    消列表及证书下载等服务。安全服务器与用户的通信采用安全信道方式(如SSL本认证中心主要负责在一个安全域内的有限群体发放证书,同时还负责维护

    和发布证书发放列表CRL(Certificate Revocation Iists)。硬件设施包括:安全服务器、CA 服务器、登记中心服务器(RA 服务器)、LDAP服务器、CA 管理服务器。它们的功能如下:安全服务器:安全服务器面向普通用户,用于提供证书申请、浏览、证书撤消列表及证书下载等服务。安全服务器与用户的通信采用安全信道方式(如SSL服务器是证书和证书撤销列表CRL 的存储体;另一个对于应用来讲,LDAP 是用户获取自己和他人的证书以及CA 签发的CRL 这些信息的来源。LDAP 服务器提供目录浏览服务,负责将RA 服务器传来的用户信息及数字证书加入到服务器上,这样其他用户通过访问LDAP 服务器就能得到他人的数字证书。LDAP 将目前网络上的大量对象信息以目录的方式存储在计算机里,在用户看来,整个目录在逻辑上是统一的整体,但实际上目录信息可分布在不同组织管理的计算机上。

     

    4.3 CA系统功能的实现

    4.3.1 证书的申请

        证书的申请可以采用两种方式:面对面申请和通过WEB 方式在线申请。

    (1)面对面申请:用户亲自到RA 中心,填写相关的表格,然后由操作人员录

    入用户的信息,提交给RA 中心的服务器,并传给CA 中心。CA 中心生成用户身份识别码,返回给RA 中心,由RA 交给用户。具体的递交方式包括打印密码信封和邮寄两种。

    (2)在线申请,步骤如下:

    ① 用户使用WEB 浏览器访问安全服务器,下载CA 的数字证书,然后与服

    务器建立连接并申请数字证书。填写用户信息以方便中心对用户资料的管理。安

    全服务器收到用户的申请信息后将之传送给RA 服务器。

    ② 登记中心管理员利用自己的浏览器与登记中心服务器建立安全连接,在此

    过程中要对RA 管理员进行严格的身份认证。

    ③ 登记中心将用户的申请与管理员的数字签名传给CA 服务器, CA 管理员查

    看用户的详细信息并验证RA 管理员的签名后由CA 服务器产生密钥对并生成证书。

    ④ RA 服务器从CA 服务器处得到新的证书,首先将证书输出到LDAP 服务

    器以提供目录浏览服务,最后向用户发出邮件,通知用户证书已发行成功,告诉

    用户证书序列号及下载地址。用户还会知道如何使用安全服务器上的LDAP 配置

    以便访问LDAP 服务器,获得他人的证书。

    至此用户数字证书申请完成。

     

    4.3.2 证书的发放

        该方案使用目录服务器发放进行证书的发布,所签发的证书发布到LDAP 目

    录服务器上,供用户进行查询和下载。

    用户可以通过离线和在线两种方式获得证书:

    (1)离线方式:用户通到RA 中心提交自己的授权码和身份识别码,然后将证

    书下载到RA 中心,由RA 中心按用户所选择的证书介质,为用户制证,然后发放给用户。

    (2)在线方式:用户通过Internet,在自己的计算机上将授权码和身份识别码提

    交给CA 中心,即可将证书下载到自己的计算机上。

        该方案数字证书支持以手工方式发放证书,同时也支持以网络方式在线发放

    证书。用户可以自由选择用软盘、IC 卡或USB 卡等介质来存放自己的证书。无论用户采用哪一种存放方法,该方案均以龟甲安全部门的有关规定为标准,用安全可靠的方式在证书存放介质中存放用户证书。

     

    4.3.3 证书的查询

        证书的查询分为两类,其一是证书申请的查询,系统根据用户的查询请求返回当前用户证书申请的处理过程;其二是用户证书的查询,这类查询可以直接在

    LDAP 目录服务器上用轻量级目录访问协议(Lightweight Directory AccessProtocol,LDAP)来完成,LDAP 服务器根据用户填写的查询信息,返回相应的结果。

        上述流程中,实际上还应该考虑数据传输的验证工作。作为证书管理的一项基本功能,对于证书查询的请求和返回结果都应进行身份验证,这种验证可通过通信双方——用户和CA,对所发送的数据进行数字签名获得。

     

    4.3.4 证书的撤销

        证书的撤销有两种情况:第一种是证书有效期已到,或证书在达到它的有效

    期之前因为用户和CA 间关系的改变等因素需要被撤销;第二种情况是由于用户的私钥泄露、丢失或是忘记保护私钥的口令等原因,造成用户证书的撤销。此时作废的证书将被放入证书撤销列表CRL 中并发布出去。任何一个使用证书的实体在使用证书前都应检查证书是否在CRL 中。这里仍以在线方式说明撤销的过程:

    (1) 用户向RA 服务器发送经加密的邮件声明要撤销证书。

    (2) 登记中心管理员对用户资料进行审核,若无误则对请求进行数字签名并提

    交给CA 服务器。

    (3) CA 管理员查询证书撤销请求列表,选取其中的一个,验证RA 管理员的

    数字签名。若正确则同意用户的申请,同时更新CRL 列表,然后将不同格式CRL

    返回给RA 服务器。

    (4) 登记中心服务器导入CRL,将CRL 公布到安全服务器上供其他用户浏览

    或下载CRL。

     

    4.4 证书管理系统的设计

     

    证书管理主要由服务器端证书管理和客户端证书管理两部分组成。

     

    4.4.1 服务器端证书管理系统

    服务器端主要负责颁发用户证书,处理用户废弃证书请求,对密钥备份与恢

    复,同时也提供CA 的交叉认证。

    ① 证书服务器

        在通讯过程中,用户A 可能需要获取用户B 的证书,其方式有很多种。最理想的方式是使用证书服务器。当发布A 和B 的证书时,除了将证书提供给请求者外,也将证书存于证书服务器中,根据证书管理的存取操作协议,证书服务器可以采用邮件服务器、FTP 服务器、LDAP 服务器、Web 服务器(带数据库)和X.500目录的目录形式。

        本系统使用的证书服务器就是分布式LDAP 服务器,它为证书存取提供了丰

    富的操作命令和函数。因为基于LDAP 的证书服务是一个分布式结构,当一个服

    务器不能存储一棵完整的目录信息树DIT(Directory Information Tree)的情况下,它可以存储DIT 的某一分支的条目。各个服务器间通过指针连接形成一个完整的分布式目录。当该证书服务器没有用户请求的公钥证书entry(条目)时,可搜索其referral 参数所指的其他服务器,并从中获取用户需要的公钥证书。

    ② CRL 服务器

        当证书必须作废时,就需要证书吊销机制,撤换以前发布的但现已无效的证

    书,它是影响PKI 服务可靠度的关键因素之一,常用的方法是使用由CA 定期发

    布由其签名的CRL,存入CRL 服务器。

        本系统的CRL 服务器也是由LDAP 服务器担当的。证书验证者查询CRL 服务器,根据CRL 中是否包含该证书序列号来判断证书的有效性。由于CRL 是定期发布的,而吊销请求的到达是随机的,从吊销请求到下一个CRL 发布之间的时延会带来状态不一致性,这会严重影响CA 提供证书服务的质量;因此本系统采用在线的证书状态OCSP(Online Cerificate Status Protocol)检查机制,来满足那些需要提供及时的证书吊销信息的应用。

     

    4.4.2 客户端证书管理系统

        客户端证书管理器目的是帮助用户管理和使用数字证书。本系统客户端证书

    管理器主要的功能包括:支持用户自己证书的申请、下载、查询、废除等,同时能对他人证书查询和下载;提供对所有证书或单个证书的导入/导出, 即将证书从证书原介质添加到本地硬盘或从证书管理器中导出存在的用户证书。现详细说明证书的使用过程。假设用户A 向用户B 发送消息。处理流程图如下:

     

    4.5 系统实现工具简介

     

    整个系统可运用Java 和OpenSSL 来实现CA,说明如下:

     

    4.5.1 JAVA语言

        Java 2 集成了大量的安全工具,其中的JCE 提供了可以处理加密数据、生成

    消息摘要、进行密钥和证书管理等功能的类库,可以方便而快速的开发身份认证、数字签名和验证及数据加密等功能的程序,并且JAVA 程序具有跨平台运行的能力,是用来实现认证中心的的理想选择。但是它对证书的支持尚不完善,只能处理现有的证书,而不能生成新的证书。所以需要借助OpenSSL 来实现生成证书的功能。

     

    4.5.2 OpenSSL语言

        OpenSSL 项目是一个开放源代码的工具包,它实现了安全套接层协议(SSL

    v2/v3)和传输层安全协议,并带有一个功效完整、具有可通用性的加密技术库

    OpenSSL 工具包可分为三个部分:SSL 函数库、Crypto 函数库和命令行工具。SSL函数库实现了安全套接层协议和传输层安全协议;Crypto 函数库可实现大多数Internet 标准的加密算法;命令行工具则提供了一个从操作系统中直接使用以上两个函数库的途径。而且命令行工具还以Crypto 和SSL 函数库为基础实现新的功能,其中就包括生成数字证书和CRL 的功能,我们正是要利用OpenSSL 的这两个功能来构建CA 认证中心。

     

    4.5.3具体实现

        整个系统构建在Red Hat Linux8.0 平台上,Java 平台为j2sdk1.4.0,其中已经包括了JCE;保存证书和证书撤销列表的证书库采用MySQL 4.0;为用户提供访问接口的安全服务器采用基于TTTPS 的Web 服务方式;Web 服务页面采用JSP 技术实现。

    首先可使用OpenSSL 中的Keytool 工具为CA 服务器生成自签名的根证书,

    然后用CA 的自签名证书对注册机构RA 服务器和安全服务器进行证书申请签名。签名后,将证书分别拷贝到RA 服务器和安全服务器,继续处理证书,最终完成服务器端证书的配置工作。

    4.6 系统安全设计

    CA 系统的设计中,首要考虑的是系统的安全性,这是CA 系统至关重要的部

    分。在设计过程中,必须对威胁系统安全的各个因素综合考虑,制定出切实可行

    的安全策略和防范手段。本系统安全设计拟从以下几个方面考虑:

    4.6.1物理安全和环境安全

    CA 系统的物理安全和环境安全是整个系统安全的基础,要把CA 系统的危险

    降至最低限度,需要选择适当的设施和位置,同时要充分考虑水灾、火警、干扰

    与辐射、犯罪活动等的威胁。

    4.6.2网络安全设计

    网络安全设计的目标是保证网络安全可靠的运行,从网络拓扑结构、网络安

    全区域划分、防火墙的设置、病毒防护与检测等各个方面设计来防范来自Internet

    的攻击。

    4.6.3 通信安全性设计

    本方案可使用认证系统设计领域内已经制定了标准化的安全API,即

    GSS-API(Generic Security Service- Application Programming Interface)公共安全服务应用程序接口,及基于它产生的SPKM 简单公共密钥机制(Simple Public-Key

    GSS-API Mechanism)所规范的协议来满足安全通信的需求。

    公共安全服务API(GSS-API)以一种统一的模式为使用者提供安全事务,由于

    它支持最基本的机制和技术,所以保证不同的应用环境下的可移植性。也就是说,GSS-API 不依赖于某一特定的程序语言或已经实现安全的机制,它只是定义了应用程序中实现该方案的安全服务协议和函数。

    SPKM 简单公共密钥机制为基于公共密钥体系的在线分布式应用环境提供认

    证、密钥建立、数据完整性验证及数据可靠性保障服务。因为它遵从RFC-1508 规

    定的接口,所以能被使用基于GSS-API 调用的安全事务的应用所采用。SPMK 有

    以下优点:

    1) SPMK 允许在不使用安全时间戳的情况下完成单方或双方的认证。这使那

    些不能存取安全时间戳的环境能够进行安全认证。

    2) SPKM 使用算法标识去定义通信双方所使用的各种算法。这在运行环境,

    未来扩展以及算法选择上保持了最大限度的灵活性

    3) SPKM 实现真正的基于非对称算法的数字签名。

    4.6.4管理员权限/级别的安全性设计

    整个系统的管理员应按层次划分级别,相应的级别有相应的管理权限,这样

    才能保障CA 系统运行的安全性。本系统拟将管理员划分三个级别:首席管理员、

    超级管理员、普通管理员。

    首席管理员负责对系统核心Authority 的管理操作。系统也应要求至少两名或

    三名首席管理员登陆才能进行一些诸如备份或数据恢复等敏感操作。首席管理员

    同时也是数据库管理员及LDAP 目录服务器管理员。

    超级管理员由首席管理员在系统初始化时产生。主要负责对系统中下一级别

    管理员的管理工作,包括新建普通管理员、删除/更改普通管理员、设置权限等操作。对于超级管理员的更改只能到Authority 由首席管理员操作完成。

    普通管理员可以是RA 管理员、审计管理员或其他自定义的管理员。他们主要负责维护系统正常运作的一些操作,如处理用户证书/撤销证书的申请、对申请进行审核、颁发CA 批准的证书、管理和查询系统日志等日常操作。

     

    5.搭建环境及编译

    5.1搭建环境

    目前,国外主流的电子商务安全协议在核心密码算法上都有出口限制,如只允许40位或56位的RC4和512位的RSA算法出口等。这样的算法强度引进后无法满足我国电子商务实际应用当中的安全需求。但是,完全自主定义和开发一套安全标准体系不是一蹴而就的事情,需要人、财、物的长期投入。
    因此,如何对国外主流的电子商务安全协议的安全模块进行改造,用国内先进的密码算法替换其相应的安全强度不够的算法,变为国产的强安全协议,这样就能较好地提高我国电子商务安全技术水平。
     

    5.2 搭建步骤及其代码

    下面就用OpenSSL提供的强大功能在FreeBSD平台下进行手工签署证书的过程。
    ⑴ 先建立一个 CA 的证书,首先为 CA 创建一个 RSA 私用密钥:
    # OpenSSL genrsa -des3 -out ca.key 1024
    该指令中genras表示生成RSA私有密钥文件。
    -des3表示用DES3加密该文件。
    -out ca.key表示生成文件ca.key。
    1024是我们的RSA key的长度。
    生成server.key的时候会要你输入一个密码,这个密钥用来保护你的ca.key文件,这样即使人家偷走你的ca.key文件,也打不开,拿不到你的私有密钥。
    运行该指令后系统提示输入 PEM pass phrase,也就是ca.key文件的加密密码,这里设为12345678。
    ⑵ 用下列命令查看它的内容:
    # OpenSSL rsa -noout -text -in ca.key
    该指令中rsa表示对RSA私有密钥的处理。
    -noout表示不打印出key的编码版本信息。
    -text表示打印出私有密钥的各个组成部分。
    -in ca.key 表示对ca.key文件的处理

    对RSA算法进行分析可以知道,RSA的私有密钥其实就是三个数字,其中两个是质数prime numbers。产生RSA私有密钥的关键就是产生这两个质数。还有一些其他的参数,引导着整个私有密钥产生的过程。
    ⑶ 利用 CA 的 RSA 密钥创建一个自签署的 CA 证书
    # OpenSSL req -new -x509 -days 365 -key ca.key -out ca.crt
    该指令中req用来创建和处理CA证书,它还能够建立自签名证书,做Root CA。
    -new 产生一个新的CSR, 它会要输入创建证书请求CSR的一些必须的信息。
    -x509 将产生自签名的证书,一般用来做测试用,或者自己做个Root CA用。
    -days 365 指定我们自己的CA给人家签证书的有效期为365天。
    -key ca.key指明我们的私有密钥文件名为ca.key。
    -out ca.crt指出输出的文件名为ca.crt。
    执行该指令时系统要求用户输入一些用户的信息,如下所示:(框内为输入的内容)
    Using configuration from /etc/ssl/OpenSSL.cnf
    Enter PEM pass phrase:12345678
    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]:JIANG SU (省份名称)
    Locality Name (eg, city) []:ZHANGJIAGANG (城市名称)
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:FAMILY NETWORK (公司名称)
    Organizational Unit Name (eg, section) []:HOME (部门名称)
    Common Name (eg, YOUR name) []:TJL (你的姓名)
    Email Address []:TJL@WX88.NET (Email地址)
    ⑷ 用下列命令查看生成证书的内容:
    # OpenSSL x509 -noout -text -in ca.crt
    该指令中x509表示证书处理工具。
    -noout表示不打印出key的编码版本信息。
    -text 表示以文本方式显示内容。
    -in ca.crt 表示对ca.crt文件进行处理
    系统显示证书内容为:
    Certificate:
     Data:
     Version: 3 (0x2)
     Serial Number: 0 (0x0)
     Signature Algorithm: md5WithRSAEncryption
     Issuer: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NE
     Validity
     Not Before: Feb 24 14:49:27 2003 GMT
     Not After : Feb 21 14:49:27 2013 GMT
     Subject: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NET
     Subject Public Key Info:
     Public Key Algorithm: rsaEncryption
     RSA Public Key: (1024 bit)
     Modulus (1024 bit):
     00:da:20:09:11:19:1f:12:f0:98:0c:fc:91:ac:3e:
     ……
     22:e1:ca:04:0f:dc:e9:bd:9f
     Exponent: 65537 (0x10001)
     X509v3 extensions:
     X509v3 Subject Key Identifier:
     03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6
     X509v3 Authority Key Identifier:
     keyid:03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6
     DirName:/C=CN/ST=JIANG SU/L=ZHANGJIAGANG/O=FAMILY NETWORK/OU=HOME/CN=TJL/Email=TJL@WX88.NET
     serial:00

    X509v3 Basic Constraints:
     CA:TRUE
     Signature Algorithm: md5WithRSAEncryption
     8d:e8:46:82:40:b4:18:a2:12:9f:7a:66:e5:fc:0c:3f:77:5a:
     ……
     04:13
    从上面的输出内容可以看出这个证书基本包含了X.509数字证书的内容,从发行者Issuer和接受者Subject的信息也可以看出是个自签署的证书。
    下面创建服务器证书签署请求(使用指令和系统显示信息基本和以上类似):
    ⑸ 首先为Apache 创建一个 RSA 私用密钥:
    # OpenSSL genrsa -des3 -out server.key 1024
    这里也要设定口令pass phrase,生成 server.key 文件。
    ⑹ 用下列命令查看它的内容:
    # OpenSSL rsa -noout -text -in server.key
    ⑺ 用 server.key 生成证书签署请求 CSR:
    # OpenSSL req -new -key server.key -out server.csr
    这里也要输入一些请求证书的信息,和上面的内容类似。
    ⑻ 生成证书请求后,下面可以签署证书了,需要用到OpenSSL源代码中的一个脚本 sign.sh,签署后就可以得到数字证书server.crt。
    # sign.sh server.csr
    ⑼ 启动安全Web服务
    最后在apache服务器中进行ca认证设置,拷贝server.crt 和server.key到/usr/local/apache/conf
    修改httpd.conf 将下面的参数改为:
    SSLCertificateFILE /usr/local/apache/conf/server.crt
    SSLCertificateKeyFile /usr/local/apache/conf/server.key
    可以启动带安全连接的Apache试一下了。
    # /usr/local/apache/bin/apachectl startssl
    提示输入pass phrase(就是前面为服务器设置的口令)
     

    6.运行结果

     

    进入CA 认证中心主界面,在个人用户业务主界面填写个人CA账号和用户密码,点击“登录”按钮

    点击“证书下载”命令,弹出下载页面,

    点击“保存”按钮,选择保存路径

    保存后,在windows资源管理器中找到该文件,右键单击该文件,在快捷菜单中选“安装证书”,出现“证书导入向导”界面,点击“下一步”按钮,

    此时,证书已经被导入,可以在IE中检查导入的正常情况。

    点击IE菜单栏“工具”下的“Internet选项”,选中“内容”选项卡,点击“证书”按钮,

    在“其他人”选项卡中可以见到SECLab证书,

    选中“SECLab”,点击“查看”按钮,可以看到该证书的详细情况,

     

    论文总结

        CA认证技术是网络安全支付的关键,随着CA认证技术的不断发展,数字证书之间的信任模型、使用的加/解密算法、密钥管理的方案等也在不断的变化。网络,特别是Internet网络的安全应用己经离不开CA认证技术的支持。中国作为一个网络发展大国,发展自己的CA认证技术是很有必要而且是非常迫切的。因此,研究和开发我国自主的、完整的CA认证系统,以支持政府、银行和企业安全地使用信息资源和国家信息基础设施已是刻不容缓。

     

     

     

    参考文献

    [1] 祁明,彭丽芳.电子商务安全保密技术与应用.华南理工大学出版社.2003,9

    [2] 李琪.电子商务安全.重庆大学出版社.2004.6

    [3] 徐升华.电子商务的安全技术.计算机与现代化.1999(6)

    [4] 肖德琴.电子商务安全保密技术与应用.华南理工大学出版社.2003.9

    [5] 李丁.电子商务安全技术的应用研究.江汉大学学报.2001.12(6)

    [6] Bruce Schneier.吴世忠,祝世雄等译.应用密码学.机械工业出版社.2004.10

    [7] M. Gardner.A New Kind of Cipher That Would Take Millions of Years to Break. Scientific

    American. v 237. n .8. Aug 1977

    [8] R.L.Rivest, A.Shamir, and L.M.Adleman.A Method for Obtaining Digital Signatures and

    Public-Key Cryptosystems. Communication of the ACM. v21. n.2. Feb 1978

    [9] 李志民.基于密钥的安全认证系统的设计.中原工学院学报.2004.12

     

    展开全文
  • 故事引入——什么是CA证书 看过一些博客,写的比较形象具体。 ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法...
  • CA电子认证服务系统源代码.zip
  • CA认证及搭建过程

    千次阅读 2020-03-05 14:07:33
    文章目录CA认证的介绍总结签证过程:搭建CA认证1. 安装ca认证软件包中心2. 配置一个自己的CA认证中心,生成CA的根证书和私钥。根证书包括 : CA公钥3. 生成CA的公钥和私钥4. 查看生成的CA根证书 CA认证的介绍 翻译成...
  • CA 认证过程及 https 实现方法

    千次阅读 2020-11-20 19:50:58
    CA 认证过程 CA 概述:Certificate Authority 的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。CA 认证的流程和公安局派出所颁发身份证的流程一样 认证中心(CA)的功能有:证书发放、证书...
  • 对包含CA认证的应用程序进行性能测试的配置过程软件测试前两天分公司的一个项目需要进行性能测试,要我们给予技术支持。这个项目的架构是B/S的,其中一项需要测试的业务,使用了CA认证技术(身份认证),因为原来没有...
  • CA认证流程

    千次阅读 2020-03-13 19:57:31
    参考: 加签,验签,CA认证中心流程 CA认证简单介绍和工作流程 以上属于个人理解,还不是很确定,还在研究学习中,希望同学给予指点,拜谢!
  • CA电子认证服务系统 源代码 1、 标签上带usb的都是对usbkey钥匙本身进行操作的,本来和小型CA没有什么关系,只是最初这个程序是用来操作usbkey的,所以保留了这些功能,usbkey采用的是飞天诚信的epas100。 2、 CA扩展...
  • CA认证完整实现步骤

    千次阅读 2020-02-11 18:59:26
    双向认证还要服务端根据ca根证书验证客户端证书和私钥,因此双向认证之前还需要生成客户端证书和私钥。 5.1、生成客户端证书 客户端证书生成步骤和服务端基本一样,填写的信息中,comm name也要是访问的域名,其他...
  • CA认证及鉴定过程

    千次阅读 2021-09-16 14:30:33
    将CSR提交给CACA一般有2种认证方式: 1、域名认证,一般通过对管理员邮箱认证的方式,这种方式认证速度快,但是签发的证书中没有企业的名称; 2、企业文档认证,需要提供企业的营业执照 2.客户端鉴定证书 ...
  • CA身份认证系统基于PKI理论体系构建,由认证服务器、管理服务器、客户端安全认证组件和SecurSecureKey(USB智能卡)组成,支持B/S结构和C/S结构的应用系统。SecurSecureKey(USB智能卡):负责客户端的数字签名和加解密...
  • 界内流行的开启TLS方法为基于一个“公钥基础设施(public key infrastructure,缩写为 PKI)”,使用了内部托管的认证中心(CA),常见PKI工具有CFSSL,OPENSSL等,下面详细介绍kubernetes使用CFSSL工具创建CA并开启...
  • kubernetes https双向认证-----ca认证

    千次阅读 2020-07-14 21:19:53
    为什么写这个呢? 在没有了解k8s认证的时候干过一件蠢事,公司项目是通过bearer token进行权限认证的,当时一直在纠结这个token是哪儿来的,然后...大致的流程,不管通过ca认证还是token认证。都会获取ca证书或者token.
  • Simple cipher of Feistel
  • image steganography
  • 前端做CA认证碰到的坑

    千次阅读 2019-02-27 17:38:13
    前端在做CA认证时,卡在了起步,检测不到设备,如下图中:SafeEngineCtl.ErrorCode的值一直是对应没有设备那个字符串。 解决思路 其实本身代码时正常在走的,所以可以排除代码级别的错误。那就应该是真的是没有...
  • 单表置换使用单表置换算法解密一段字符串。
  • CentOS 7 搭建CA认证中心

    千次阅读 2019-12-18 12:40:46
    搭建CA认证中心 配置一个自己的CA认证中心 [root@centos ~]# vim /etc/pki/tls/openssl.cnf +172 #直接定位到172行 basicConstraints=CA:FALSE # 把FALSE改成TRUE 把本机变成CA认证中心 配置认证中心,生成私钥与根...
  • Cisco+Acs的安装与应用详解,关于网络认证和计费的
  • 使用openssl实现一个简单的服务器/客户端程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,247
精华内容 29,298
关键字:

CA认证