使用 openssl 製作數位憑證
一、先製作一把私密金鑰 (Private Key)
# openssl genrsa -out server1.key.pem 1024 (以 1024 位元長度製作一把 RSA 加密的金鑰,名稱為 server1.key.pem)
Generating RSA private key, 1024 bit long modulus
.++++++
……………………++++++
e is 65537 (0x10001)
看一下產生的金鑰長得什麼樣子……
# openssl genrsa -out server1.key.pem 1024 (以 1024 位元長度製作一把 RSA 加密的金鑰,名稱為 server1.key.pem)
Generating RSA private key, 1024 bit long modulus
.++++++
……………………++++++
e is 65537 (0x10001)
看一下產生的金鑰長得什麼樣子……
有第三方認證的需求,就產生了專門為人認證的組織 ,比較大的憑證機構的公開金鑰就會內建在瀏覽器中,如 VeriSign、VISA、IPS、Entrust、America Online、DST 等。
取得 CA 憑證流程:
=========================================
WebServer 產生 Cert Req 憑證申請書,內含 WebServer 的 UserInfo、WebServer 的 Public Key。
# cd /etc/pki/tls/misc (進入本目錄)
# ls -al
drwxr-xr-x 2 root root 4096 3月 19 22:06 .
drwxr-xr-x 5 root root 4096 1月 12 07:34 ..
-rwxr-xr-x 1 root root 3758 12月 1 2006 CA (產生 Cert Req 的執行檔)
-rwxr-xr-x 1 root root 119 12月 1 2006 c_hash
-rwxr-xr-x 1 root root 152 12月 1 2006 c_info
-rwxr-xr-x 1 root root 112 12月 1 2006 c_issuer
-rwxr-xr-x 1 root root 110 12月 1 2006 c_name
加密和解密的金鑰 (key) 是不一樣的,會有兩把 key,一把負責加密、一把負責解密。
=========================================
方法一:
接收者:產生兩把金鑰,一把是公開金鑰(public key),一把是私密金鑰(private key)妥善保管,將 public key 傳送給對方,要對方以這把 public key 將傳送的資料加密。
傳送者:以收到的 public key 將資料加密 Public Key(Data),開始傳送給接收者。就算有人 sniffer 也沒有解密金鑰,拿到 public key 也無法解密。
接收者:收到加密過的資料,用自已的 private key 將資料解密。Data = Private Key ( Public Key (Data))。
資料:Data
公開金鑰:Public Key
私密金鑰:Private Key
=========================================
加密和解密者使用同一組 key (通常是一組字串),稱為對稱加密。
常用的演算法:DES, 3DES, Blowfish, RC2, RC4, RC5, IDEA, CAST5
對稱加密常用工具:
1. passwd
2. gpg
3. openssl
Linux 使用者密碼會隨機加上一組 salt ,再一起進行 md5 編碼,
# cat /etc/shadow
ishm:$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1:14322:0:99999:7:::
$1$gPNQzB85$ 這一段是加在密碼段的 salt 註解,可用 openssl 或 php 來演算出來:
# openssl passwd -1 -salt “gPNQzB85” “123456” (密碼是 123456)
$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1
-1 代表使用 MD5 演算法,用法可以用 – – help 查詢
Red Hat Enterprise Linux (RHEL) 內含了兩種加密的服務:
1. Gnu Privacy Guard (GPG),主要是用在檔案的加密上,如驗證檔案的完整性、加密電子郵件等。
2. openssl,主要是用在網路通訊的加密。
系統提供了一個裝置 /dev/random ,它會擷取鍵盤、滑鼠、或磁碟的動作來產生亂數。
試著
#cat /dev/random
然後移動滑鼠、敲鍵盤等,會一直產生亂數,結束按 Ctrl + C。
openssl 函數庫也提供了亂數產生器:
#openssl rand 1024 -out rand.bin (會產生 1024 bit 的二進位亂數)
#openssl rand 1024 -base64 -out rand.txt (會產生 1024 bit 經 base64 編碼的 ASCII 亂數)
先在自己家目錄下建立 .fonts 資料夾,然後將所有的 *.ttf 字型複製到家目錄的 .fonts 目錄下:
$mkdir ~/.fonts
$cp *.ttf ~/.fonts
最後再更新字型的快取:
$fc-cache -f -v (-f 為強制掃描,-v 為 verbose 顯示詳細資訊,不然會不知道到底有沒有執行)
這樣就可以使用新字型了。
==============================
為了因應與時俱增的安全威脅,美國國家安全局 (National Security Agency, NSA) 發展了一套處理機敏資料的規則,NSA 發現許多安全漏洞都起因於一般使用者繞過了本機安全機制而起,例如為了方便起見將目錄的權限設為 777,但它卻潛藏著將所有資訊洩漏給其他人的危險。
在 Unix-like 系統,存取控制取決於自主存取控制 (Discretionary Access Control, DAC),它是依據當時使用者的身份來決定存取的權限,也就是根據檔案的擁有者 (Owner)、群組 (Group)、其他 (Other) 的讀寫執行 (r,w,x) 權限來作規範,權限的規範除了太單純之外,對 root 完全無控制能力,對運行中的程序本身也無法作限制。
xinetd 本身是由 System V 腳本所管理,它會監控由它管理的服務所需監聽的 port,當有連線由監聽 ports 連入時,xinetd 會啟動相對應的服務,當連線中斷時,xinetd 就會中止該服務的執行。和System V 所管理 standalone 的服務比較起來,xinetd 所管理的服務在閒置時不會佔用系統資源,直到有連線要求時才會啟動服務;而 standalone 的服務會常駐在記憶體中,當有連線需求時能夠直接回應要求,反應更為迅速。
當系統核心 kernel 開機完成後,整個開機程序就交到 init 這支程式身上,當我們 exit 登出時,其實 shell 程式就中止了,這時藉由 init 來將將 shell 重新啟動帶出登入畫面,這個動作就叫 respawn,它會將 /sbin/mingetty 重新 respawn,讓使用者可以再次登入。
init 的設定在 /etc/inittab 中變更,舉例來說,如果要在 serial port 監聽登入動作,可以在 /etc/inittab 加入這一行:
co:23:respawn:/sbin/agetty -f /etc/issue.serial 19200 ttyS1
其中 co 是代表 serial port 的連線代號,23 表示只在 runlevel 2 及 runlevel 3 適用,它會 respawn /sbin/agetty 這支程式供使用者登入,/sbin/agetty 的執行參數是 -f /etc/issue.serial 19200,-f /etc/issue.serial 是指登入時用 /etc/issue.serial 的檔案內容來作為登入畫面的資訊、19200 則是 serial port 的連線速度,而 ttyS1 則是 serial port 的裝置代號。
==============================