---
# System prepended metadata

title: 安全加密協定及憑證頒發機構筆記
tags: [Security]

---

---
title: 安全加密協定及憑證頒發機構筆記
tags: Security
disqus: hackmd
Editor: roy.wang176@gmail.com
---

# 安全加密協定及憑證頒發機構筆記
## 前言
憑證是一種數位證書，用於加密通信和身分認證。憑證包含了證書持有人的基本身分訊息和公鑰憑證，並由憑證頒發機構 ( 又名：CA中心 ) 進行簽發和加密。

因此，在講到憑證之前，我們必須對安全加密協定(SSL、TLS和HTTPS)和憑證頒發機構(CA中心、憑證申請書、憑證公鑰、憑證私鑰)有一些基本的認識。


## 什麼是SSL/TLS?
### 什麼是SSL?
- SSL全名是Secure Sockets Layer，即安全通訊層。是一個用於保護網路通信安全的協議。
- SSL協議使用非對稱性加密技術，通過數字證書驗證服務器的身份，並加密在客戶端和服務器之間傳輸的數據。
- SSL連線流程如下圖：

![](https://i.imgur.com/fDGHPyf.png)

- SSL連線流程：
  1. 訪問：Client端訪問一個使用SSL保護的Server端。
  2. 回應：Server端給予回應並發送數字證書、公鑰給Client端。
  3. 驗證：Client端會使用Server端公鑰解密數字證書，以驗證Server端的身份。
  4. 加密：Client端創建一個稱為"會話密鑰"的加密密鑰，並使用Server端傳來的公鑰加密此密鑰。
  5. 回傳：Client端回傳加密後的密鑰給Server端
  6. 解密：Server端使用自己的私鑰解密加密密鑰，取得會話密鑰。
  7. 後續資料傳輸：後續將使用會話密鑰相互通訊。


### 什麼是TLS?
- TLS全名是Tranport Layer Security，即傳輸層安全性。
- TLS是SSL的最新版本，提供更好的安全性和加密技術(就像是SSL pro max)。因習慣使然，我們時常常在講SSL加密，但實際上，現今的加密技術使用的都是TLS加密。

### 什麼是HTTPS?
- HTTPS全名是Hypertext Transfer Protocol Secure，即超文本傳輸安全協議。使用SSL/TLS進行加密。
- HTTPS能夠確保：
  - 資料傳輸是安全的。
  - 連線正常，未被竄改。
    例如：想要連線至google網頁，卻因為連線至假網站導致個資外洩等等。
    正確網址：```https://www.google.com.tw```
    假冒網址：```https://www.gooogle.com.tw```(多了一個o)

&nbsp;
介紹完加密協議後，接下來，我們需要了解憑證的簽發流程及其架構。


## 什麼是CA中心?
- CA中心全名是Certificate Authority center，即憑證管理中心、數位憑證頒發機構。
- CA是具有<u>**公信力**</u>和<u>**被信任的第三方**</u>，可以對個人和機關團體<u>**提供驗證**</u>及<u>**憑證簽發**</u>等服務，承擔檢驗公鑰合法性的責任。因此，CA主要有兩大特性:
  - CA是受國際認可的。
  - CA給受信任的對象簽發憑證。

### 架構圖
![](https://i.imgur.com/iumaQv5.png)

- 通過上方的概念圖，我們可以了解：
  1. CA中心：對Root CA證書申請者進行身分驗證，並頒發數位證書。CA中心是一個第三方機構，負責產生、分配並管理所有參與網路訊息交換。
  2. Root CA：用於驗證其它Root CA機構所頒發的數位證書的有效性。
     大多數的作業系統和瀏覽器都會<u>**預先安裝一些受信任的Root CA證書**</u>[[1]](#1)。
  3. CA是一個<u>**中間機構**</u>，由Root CA授權，頒發數位證書給證書申請者。
     補充：2和3有可能是同一個憑證供應廠商[[2]](#2)
  4. 當個人/網站/公司想要數位證書時，會先向中間機構申請證書，並提供身分相關資訊。此時中間CA會對其資訊進行驗證，驗證通過便會頒發證書。

&nbsp;
舉個生活化的例子給大家參考：
  
&nbsp;
  ![](https://i.imgur.com/GDK80pm.png)

&nbsp;
我們可以把加密憑證想像成我們的個人護照，今天我們想要去申請護照，首先需要到外交部領事事務局(以下簡稱外交部)填寫申請表單。表單中包含多項必要的基本資訊填寫完成後將申請單交給外交部。待申請核可後，便可以拿到我們的護照。當我們出國通過海關時，海關都會查核護照，確保是本人。如下圖。
這時你會發現，咦? 怎麼軟體裡面的申請跟現實中很多事情很像，是因為軟體都是由「人」開發出來的，因此許多的流程都會相互借鏡。

&nbsp;
&nbsp;
上一章：[基礎密碼學筆記](https://hackmd.io/9bAsuy4-T5O0veIsxHVZaQ)
下一章：[Openssl介紹與實作筆記](https://hackmd.io/VAQRrdE_QeC0XjLuwjsKDw)


## 補充
[1]  <span id="1"></span>: 預先安裝一些受信任的Root CA證書
1. 作業系統：Windows(包含Microsoft公司及各組織的證書)、MacOS(包含Apple公司及各組織的證書)、Linux(包含RHEL、Ubuntu等等發行版各自受信任的證書)。
2. 瀏覽器：Chrome(包含Google公司及各組織的證書)、Safari(包含Apple公司及各組織的證書)、Firefox(包含Mozilla公司及各組織的證書)。

[2] <span id="2"></span>: 憑證供應廠商
1. 民營機構：網際威信、台灣網路認證公司、中華電信等等。
2. 政府機構：研考會、經濟部、內政部等等。

## 參考網址
[Openssl Tutorial](http://www.cs.toronto.edu/~arnold/427/19s/427_19S/tool/ssl/notes.pdf)
[Openssl生成證書流程](https://blog.csdn.net/qq_42549122/article/details/90266920)
[什麼是SSL、TLS和HTTPS?](https://www.websecurity.digicert.com/zh/hk/security-topics/what-is-ssl-tls-https)
[網站SSL加密原理簡介](https://www.netadmin.com.tw/netadmin/zh-tw/technology/6F6D669EB83E4DC9BEA42F1C94636D46)
