数字证书简介

学习笔记

数字证书



一、数字证书简介

  1. 数字证书,digital certificate。一种集合了多种加密方式的安全标准,数字证书通常由【受到人们广泛信赖的组织】向第三方颁发,表明这个第三方也是一个值得信赖的对象。数字证书的使用可以防止中间人攻击,常用于服务器与客户端浏览器的交互,数字证书其实就是一个.crt文件。

  2. 数字证书中对各种加密算法的使用:

    • 摘要算法来确保数据没有被篡改。
    • 非对称加密算法对数据进行加解密。
    • 签名算法确保数据的完整性和抗否认性。
    • 对称加密算法负责后续的通信过程。
  3. CA:Certificate Authority,数字证书认证机构。

  4. 数字证书的颁发采用链式签名验证,通过**根证书(Root CA)**去签名下一级证书,层层签名,直到最终的用户证书。

  5. 根证书CA是**【自签名证书】**,存在于用户的操作系统或者浏览器中(默认内嵌),任何经过CA认证的数字证书都可以对其本身进行校验,确保证书本身不是伪造的,数字证书表示CA结构对证书持有者的认可。

  6. 证书申请者首先需要自生成公匙与私匙,然后向 CA 机构发送一个证书请求文件 .csr (Certificate Signing Request,证书签名请求),包含:

    • 公匙
    • 申请者信息
    • 域名

    CA 机构确认无误后用自身私匙给证书签名,然后将签名等其他信息塞入证书打包成 X.509 格式并返回数据,至此一份正式的证书生成。

    专用临时Demo

    申请数字证书

  7. 我们常听到的SSL/TSL、HTTPS是什么呢?

  • SSL Secure socket layer,网络安全层。现代 TLS 加密的前身、数字证书的一种,历史原因我们习惯统称 SSL 。
  • SSL证书部署在服务器上,由CA机构颁发,可以说它就是【数字证书】,只不过它是一种遵守 SSL 协议的数字证书。
  • HTTP + SSL/TSL = HTTPS。
  • Http端口:80
  • HTTPS端口:443

HTTP与HTTPS

  1. CA证书的种类(3种)

    ​ 安全证书主要分为DV、OV和EV三个种类,对应的安全等级分别为低、中、高。正常情况下,一个合法的数字证书需要经过CA签名,这需要认证域名并支付一定的费用,三者的审核过程、审核标准和对应的域名数量不同,价格在几百元到几万元不等。

    ​ 选择签发机构时,最好选择行业认可的全球范围内都可以使用的 CA 机构签发的证书。目前我们国内的证书能够符合标准的还不是特别多,主要原因是有一些证书不能够被国外的浏览器所认可,在使用的时候需要进行一定的额外操作。

    • DV SSL:只验证网站域名所有权的简易型(Class 1级)SSL证书,可10分钟快速颁发,能起到加密传输的作用,但无法向用户证明网站的真实身份。目前市面上的免费证书都是这个类型的,只是提供了对数据的加密,但是对提供证书的个人和机构的身份不做验证,只要你能向CA机构证明你拥有这个域名的管理权限就可以申请。
    • OV SSL:提供加密功能,对申请者做严格的身份审核验证。和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高,但是收费。
    • EV SSL:最安全、最严格的 SSL 证书,遵循全球统一的严格身份验证标准,是目前业界安全级别最高的顶级(Class 4级)SSL证书。常用于金融证券、银行、第三方支付、网上商城等领域,重点强调网站安全、企业可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输。这部分的验证要求最高,申请费用也是最贵的。
  2. CA证书的类型(3种)

    • 单域名版:只保护一个域名。
    • 多域名版:可以保护多个域名。
    • 通配符版:保护同一个主域名下同一级的所有子域名,不限个数。通配符版只有 DV 和 OV 具有,EV 不具有通配符版本。
  3. 注意:数字证书存储的是公钥以及相关的证书链和算法信息,标准格式存入,标准格式取出。私钥必须严格保密,如果数字证书对应的私钥泄漏,那么该CA证书签发的所有证书将不可信,这会造成严重的安全威胁,数字证书服务商 DigiNotar 就发生过私钥泄漏导致公司破产的事故。

数字证书

(数字证书包含版本、发行方、过期时间、域名、公钥、证书签名等信息)

  1. 【客户端/服务器】数字证书验证过程,以HTTPS协议为例,浏览器和服务器建立安全连接的步骤如下(单向验证):

    1. 浏览器向服务器发起请求,服务器向浏览器发送自己的数字证书。
    2. 浏览器用操作系统内置的 Root CA 来验证服务器的证书是否有效,如果有效,就使用该证书加密一个随机的AES口令并发送给服务器。
    3. 服务器用自己的私钥解密获得AES口令,并在后续通讯中使用AES加密。

    数字证书验证模型

    数字证书

  2. 概念:【数字证书链条】

        什么是数字证书链条?我们在验证证书的有效性的时候,会逐级去寻找签发者的证书,直至找到根证书,因此数字证书的存在形式为链条。通过下图我们可以看到百度的数字链条为 3 层,顶层为根证书,底层为百度的证书,中间还存在一个【中间证书】。

        **那为什么会存在“中间证书”,直接用根证书授权不好吗?**其实中间证书的存在增加了根证书的安全性,有助于在发生安全事件时最小化损害;当安全事件发生时,不需要撤销根证书,只需撤销中间证书,使从该中间证书发出的证书组不受信任,从而达到最小化损害范围、保护根证书的作用,因此各大根证书厂商都不会直接向第三方签名,而是会通过“中间方”去签名。

    (H2由上一级生成,在你提交信息给CA的时候,CA用他的私钥和你信息摘要生成H2)

    数字证书链条

  3. 数字证书链条的运转模型(以3层为例):

    三级证书链条模型


二、自己动手:自签名证书

  1. 自签名证书存在两种:

    • 官方认可的根证书CA。
    • 我们自己定义的证书CA,官方不认可
  2. 本节主要讲述我们自己定义的证书CA,包括它的生成、使用等。这种证书可以正常开发调试,但不能对外作为服务使用,因为其他客户端并不认可未经CA签名的证书。

  3. 要使用数字证书,首先需要通过【命令行】创建证书,我们在这里以Java JDK的 keyTool 工具为例签发证书:

    keytool 
      -storepass 123456 
      -genkeypair 
      -keyalg RSA 
      -keysize 1024 
      -sigalg SHA1withRSA 
      -validity 3650 
      -alias mycert 
      -keystore my.keystore 
      -dname "CN=www.aaa.com, OU=aaa, O=aaa, L=BJ, ST=BJ, C=CN"
    

    各个参数含义如下

    • storepass:口令为123456。
    • keyalg:指定RSA加密算法。
    • sigalg:指定SHA1withRSA签名算法;
    • validity:指定证书有效期3650天;
    • alias:指定证书在程序中引用的名称;
    • dname:指定证书要授予的域名,必须跟要绑定的域名一致。

    执行完上述命令,JDK 会在当前目录创建一个my.keystore文件,并存储创建成功的一个私钥和一个证书,它的别名是mycert。

    image-20220814163434937

  4. 当然,每次都要记住这些参数很麻烦,因为我们可以利用在线工具自动生成语句,然后拷贝到服务器上运行即可(点击访问【CRS在线生成工具】

CRS在线生成工具

  1. 有了key store存储的证书,我们就可以通过数字证书进行加解密和签名:

    • 私钥以PrivateKey实例表示,公钥则以X509Certificate表示
    • 读取证书并不需要口令,只有读取私钥才需要。
    • 如果部署到Web服务器上,例如Nginx,需要把私钥导出为Private Key格式,把证书导出为X509Certificate格式。
    public class test {
        public static void main(String[] args) throws Exception {
            byte[] message = "中文".getBytes("UTF-8");
    
            // TODO 读取KeyStore:
            KeyStore ks = loadKeyStore("/my.keystore", "123456");
    
            // 读取私钥:
            PrivateKey privateKey = (PrivateKey) ks.getKey("mycert", "123456".toCharArray());
            // 读取证书:
            X509Certificate certificate = (X509Certificate) ks.getCertificate("mycert");
    
            // TODO 加密:
            byte[] encrypted = encrypt(certificate, message);
            System.out.println(String.format("encrypted: %x", new BigInteger(1, encrypted)));
    
            // TODO 解密:
            byte[] decrypted = decrypt(privateKey, encrypted);
            System.out.println("decrypted: " + new String(decrypted, "UTF-8"));
    
            // TODO 签名:
            byte[] sign = sign(privateKey, certificate, message);
            System.out.println(String.format("signature: %x", new BigInteger(1, sign)));
    
            // TODO 验证签名:
            boolean verified = verify(certificate, message, sign);
            System.out.println("verify: " + verified);
        }
    
        static KeyStore loadKeyStore(String keyStoreFile, String password) {
            try (InputStream input = test.class.getResourceAsStream(keyStoreFile)) {
                if (input == null) {
                    throw new RuntimeException("file not found in classpath: " + keyStoreFile);
                }
                KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
                ks.load(input, password.toCharArray());
                return ks;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        static byte[] encrypt(X509Certificate certificate, byte[] message) throws GeneralSecurityException {
            Cipher cipher = Cipher.getInstance(certificate.getPublicKey().getAlgorithm());
            cipher.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
            return cipher.doFinal(message);
        }
    
        static byte[] decrypt(PrivateKey privateKey, byte[] data) throws GeneralSecurityException {
            Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            return cipher.doFinal(data);
        }
    
        static byte[] sign(PrivateKey privateKey, X509Certificate certificate, byte[] message)
                throws GeneralSecurityException {
            Signature signature = Signature.getInstance(certificate.getSigAlgName());
            signature.initSign(privateKey);
            signature.update(message);
            return signature.sign();
        }
    
        static boolean verify(X509Certificate certificate, byte[] message, byte[] sig) throws GeneralSecurityException {
            Signature signature = Signature.getInstance(certificate.getSigAlgName());
            signature.initVerify(certificate);
            signature.update(message);
            return signature.verify(sig);
        }
    }
    
  2. 生成了我们自己的证书之后,假如我们也想我们的电脑信任此证书,该如何操作呢?

    **答:**将自签名证书导入自己的操作系统或者浏览器之中即可,比如以前的12306网站就是如此操作。当然这么做存在潜藏风险,因为你一旦信任了该证书,那么你也会自动信任该证书签发的所有网站,当它们想要干点坏事的时候你就会防不胜防,因此最好不用此种方式或用完即删。


三、番外篇:

1、Windows 如何查看自己电脑上的证书?

按住 Windows + R 键调出运行栏,然后输入certmgr.msc回车运行即可。

Windows 如何查看自己电脑上的证书

2、macOS 如何查看自己电脑上的证书?

Mac用户搜索应用 “钥匙串” 即可看到自己电脑上被信任的所有根证书。

macOS 如何查看自己电脑上的证书


附录:参考文章

  1. 数字证书、签名到底是什么?

  2. 证书,证书链,CA的那些事

  • 8
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
酒店数字电视转模拟系统方案 第一章、系统设计原则 方案设计中充分考虑可能完善的整体规划,围绕当前应用需求的特点,本着实用与发展相结合的总体原则:以满足目前的应用为出发点,合理优化设计方案;并兼顾未来的应用需求和技术发展,为系统在技术上提供有效的平滑过渡环境。 1.先进性、灵活性、高性价比 先进性指该系统技术水平在同等规模与同等造价条件下具有国内领先水平,并能适应今后若干年发展需要。 系统标准采用以860MHz固定频道中频调制器为主配置少量870MHz捷变频调制器混合使用,其优点是可以兼配固定频道调制器优良的性能指标和低造价,又能够利用部分捷变调制器合理地传播于无干扰频段,灵活设置特别需求的电视频道和其他开路信号占用频道的问题。 2.科学性、政策性 在保证系统先进性的同时,科学合理的设计前端系统,是整个系统能否高水平运行的重要条件。目前境内卫星电视信号绝大多数已经转为数字电视信号,因此选用数字卫星电视接收机已成为必要和必须。 3.可靠、安全性 本系统设计为无人值守,常年加电运行。因此系统选用先进、成熟、稳定、可靠、安全的产品,是已在类似工程中使用过许多的,证明能适应各种环境的设备。使之适应各种气象条件和供电干扰。建议提供一间20-30平方米的房间做为数字电视前端机房安置机柜,以便管理及维护。 第二章、系统设计结构 1.信号接收部分 其任务是通过数字机顶盒的视音频信号,通过调制器,调制成模拟信号分配的各房间 2.信号处理部分 通称电视前端部分,其任务是将广电数字机顶盒或专用解码器输出音视频信号,再经调制、混合、放大等,最后经过传输系统送到终端分配网络部分,其主要设备包括:调制器、混合器、放大器、机柜等,该部分设备都在前端机房中。 3.输出部分及分配网络部分 其任务是将经过处理的电视信号通过光缆或同轴电缆及分配元件送到各个用户终端。其作用是将前端送来的混合电视信号按一定的电平均匀的传输到各个用户终端,并确保各项指标在规定的范围内,要求分配系统符合广电部《30MHz-1000MHz声音和电视信号的电缆分配系统》GB6510-86标准。这一部分应根据建筑物实际分布情况进行设计,本方案暂不作详细设计。 第三章、系统设备选型及简介 前端系统是是系统的中枢。前端系统输出质量的好坏,是整个系统的关键。前端的选型及系统设计是,模拟电视系统的基础,超前的设计和系统的高度集成可使业主得到最佳的投资效益。整个电视系统的性能、指标除了取决于设计、调试者的技术水平之外,前端设备的配置是一个非常关键的环节,具体来说就是采用什么样的调制主机、混合器等,为降低造价前面我们应统筹考虑,精心规划,以免造价过高,因此我们定位为专业级中等偏上档次的设备,关键是性能稳定可靠。 1.调制器是将视频信号、音频信号经过中频信号处理转变为射频信号的设备,对整个系统信号质量的好坏关系极大。现在市场上的调制器质量档次差别很大,同档次又有两种:一种是固定频道邻频调制器,另一种是捷变型邻频调器,固定频道调制器稳定性较好一些,但是频道不可更改,捷变型邻频调器比则同档次固定频道调制器价格稍高,可在48MHz--870MHz内频道连续可调,但在一个系统中不能大量使用,否则信号处理部分难以调试到最佳状态,本系统中灵活选用深圳市鼎盛威电子有限公司生产的四路固定频道隔频调制器SK-4860FM。 2.混合器选用鼎盛威电子生产的SK-16无源十六路频道混合器,工作频率范围为5-1000MHz,具有高各稳定、低驻波、抵插损、高隔离度,还具有良好的扩容性。 第四章、系统节目设计部分 1.数字机顶盒 40套(广电提供) 第五章、系统工程施工 1.工程施工原则 施工人员熟悉施工图纸及有关资料,包括工程特点、施工方案、工艺要求、施工质量标准。 设备、仪器、机具、辅材、工具和机械等满足连续施工和阶段施工的要求。 系统的工程施工前应对现场情况进行检查,符合条件方可施工。 2.设备安装 在设备安装前按要求进行检查,将设备逐个进行检测和粗调,发现无任何故障后,方可安装。 第六章.工程验收 工程验收由工程设计、施工和建设单位的代表组成验收小组,按竣工图进行。验收时应做好记录,签署验收证书;验收合格后,方可交付使用。当验收不合格时,应由设计、施工单位返修直到合格,再行验收。作为施工单位在正式工程验收前5天,自己应组织预验收。 1.验收内容 系统工程的施工质量; 系统质量的主观评价; 系统质量的客观评价; 2.竣工验收文件 在系统的工程竣工验收前,施工单位应编制好竣工验收文件,验收文件应保证质量,做到内容齐全、标记详细、编写清楚、数据准确、互相对应;一式三份交建设单位,其中一份由建设单位签收盖章后,退还施工单位存档。 设备简介: SK-4860FM 经济型四合一固定隔频频道调制 产品特点 1、四路视音频通道输入,一路射频四个频道的隔频输出。 2、采用高中频调制、一次变频方式和声表面滤波器处理, 带外干扰小。 3、伴音、图像高中频和射频本振均采用 MCU 锁相技术, 频率稳定度和准确度都高。 4、整机各功能电路均采用片状工艺,整机可靠性高。 5、操作便利,音量大小、视频调制度均可在前面板调节。 6、电源部分采用高可靠性高动态范围的开关电源。 技术参数 射频 输出频率范围 47~870任四个隔频频道可选 频率准确度 ± 5kHz 输出电平 40dBmV 带外抑制 - 60dBc max 输出阻抗 75Ω 输出反射 12dB min 任意频道 视频 伴音 - 图像载波 18 ± 2dB 输入电平 0.6 ~ 1.5Vp-p 视频输入阻抗 75Ω 视频输入反射 30dB min 信噪比(加权) 60dB 时延 45 nsec 带内平坦度 ± 1dB 微分增益 ± 5 % (调制度为 87.5 % ) 微分相位 ± 5° (调制度为 87.5 % ) 音频 输入电平 -10 ~ 10 dBm 输入阻抗 10KΩ min 带内平坦度 ± 1dB 失真度 1 % 信噪比 -60dB 图像、伴音间距 根据制式定 电 源 输入交流电压 220V 功耗 15W max 尺寸 440mm 长 ′ 17-20°C ---- +70°C 重量 最大 8kg 存储温度 -20°C ---- +70°C 使用温度 0°C ---- +45°C 混合器 SK-16 24 路混合器 产品特点 1、采用定向耦合器电路,性能指标高。 2、 整机具有高可靠性和高温度稳定性等特点。 3、24路输入,1 路混合输出。 4、 采用普通型或豪华型标准 19 ′机箱。 技术参数 频率范围 45-860MHz 插入损耗 20 ± 2dB 隔离损耗 ≥30dB 输入输出阻抗 75 Ω 输入输出反射损耗 ≥12dB 四. 放大器(ET-30) SK-ET30 放大器 SK-ET30型单向干线(分配)放大器为860MHz平台, 30dB工作增、输出为单路、分支或分配三种方式可选。 采用高性能线性变压器,电压适应范围宽。本产品不仅 适用于HFC网络;也适用于传统的同轴电缆网络。 产品特点 1. 45~860MHz双向平台设计。 2. 正向通路采用单级推挽模块放大。 3. 单路、两路分配或分支三种输出方式可选。 4. -20dB定向耦合测试方式。 5. 60V(35~90V)或220V(100V~265V)交流供电。 6. 最大8安培过流。 频率带宽 45~860Mz平台 内平坦度 ±0.75dB 反射损耗 ≥16dB 称增益 30Db(单路输出) 最小满增益 32dB(单路输出) 均蘅量 3~21dB(1.5dB步进) 躁声系数 ≤10 C/CTB ≥62dB 推挽模块59路PAL制 C/CSO ≥60dB 42dBmV输出(典型值) 测试口电平 -20dB(相对于主输出) 信号交流声比 ≥66dB 增益调整范围 0~10dB(连续可调) 射频输出连接 F型接头或5/8,24牙贯通头 供电 ~220V(~100V-~265V) 60V(~35V~75V) 40套节目需要设备概要说明及所用器材一览表; 高频头。 1 四路固定调制器. 40 数字机顶盒 40 16路混合器. 1 放大器. 1 19”机柜. 2 六路分配器. 1 八路分配器 5 六路分配器 1 电缆线◎5线 一批 施工质量验收记录; 第八章、质量保障、售后服务及培训 1.产品质量及功能保障 该工程项目内所建议选用的产品均获认证,产品质量符合国家和国际标准,功能具先进性、适用性、可靠性和稳定性。 2.售后服务 对整个系统实行一年内免费维护和保修; 三年内属人为因素问题造成的器材损坏,只收取元器件成本费; 系统出现故障,我公司保证在48小时内进行处理; 3. 技术培训 工程施工完毕后,我公司安排一名工程师对工程甲方技术及操作人员(人员数量及名单由甲方确定)针对系统的操作使用、日常维护及简单故障排除,免费进行培训。保证参加培训人员均能对整个系统有全面的了解,并熟练掌握设备的操作和日常维护。 培训内容: 电视机房系统的组成和原理 系统各种器材的安装和使用方法及系统维护 第九章、系统选用设备及价格汇总 一:协商价350---450每个频道(包含所有材料费及利润) 序号 名称及型号 数 量 单 价 金 额 产地及公司名称 1 四路固定调制器(SK-4860FM) 10 深圳鼎盛威 2 16路混合器(SK-16) 1 深圳鼎盛威 4 19英寸标准机柜 1 可自备 5 8分配器 5 奥视 6 6分配器 1 奥视 8 放大器(ET-30) 1 深圳鼎盛威 9 75-7同轴电缆 线材若干米 7 2.5/m 10 75-5同轴电缆 线材若干米 2 1.5/m 11 F头 200 0.5 深圳鼎盛威 12 辅助材料费及材料运费小计: 13 差旅设计安装调试综合费 14 费用合计: 15 税金: 16 工程预算总价:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThinkStu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值