# PKI lab 1. 打開seedlab後,開啟terminal 2. 到[PKI lab](https://seedsecuritylabs.org/Labs_20.04/Crypto/Crypto_PKI/)中下載新的Labsetup - 可以先新增一個資料夾(這邊用PKI做示範) - 進去PKI之後,要去複製PKI lab的[Labsetup](https://seedsecuritylabs.org/Labs_20.04/Files/Crypto_PKI/Labsetup.zip) - 如果用wget,記得最後加上`--no-cehck-certificate`的argument ![截圖 2024-05-16 晚上9.09.37](https://hackmd.io/_uploads/SJ65HYmXR.png) 3. 下載好後,unzip Labsetup.zip,然後進去Labsetup的資料夾 4. 用nano或是vim打開`/etc/hosts`(記得要用sudo),在底下`# For Shellshock Lab`那邊新增一串網域 `10.9.0.80 www.bank32.com`,並把上面兩個`10.9.0.80`的網域comment掉。 ![截圖 2024-05-16 晚上9.17.14](https://hackmd.io/_uploads/ryBvvtmX0.png) ## CSDN網址 [1](https://blog.csdn.net/yalecaltech/article/details/115769255)、[2](https://blog.csdn.net/qq_39678161/article/details/126562217) ## Task1 1. 按照csdn裡面所說的做。 - `openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -keyout ca.key -out ca.crt` - ![截圖 2024-05-16 晚上9.25.05](https://hackmd.io/_uploads/rJa4KKXQ0.png) - 這時候會要求我們輸入一段phrase,我設定`0000`,後面還要再認證一次。底下還要求輸入一堆有的沒的,不用打字,全部enter過去。 - ![截圖 2024-05-16 晚上9.26.29](https://hackmd.io/_uploads/B1g9YKmmC.png) - 結束後會輸出兩個檔案:`ca.key`和`ca.crt`,分別是CA的私鑰以及CA的公鑰。 ## Task2 1. 為了要讓`bank32.com`獲得我們的CA公鑰,我們需要生成CSR (certificate signing request) - `openssl req -newkey rsa:2048 -sha256 -keyout server.key -out server.csr -subj "/CN=www.bank32.com/O=Bank32 Inc./C=US" -passout pass:dees` - ![截圖 2024-05-16 晚上9.31.52](https://hackmd.io/_uploads/rJrCqt7XA.png) - 有興趣的話可以用`openssl req -in server.csr -text -noout`及`openssl req -in server.key -text -noout`看一下這個CSR、key內容是什麼,有點大一串,我就不全部截圖了。 - ![截圖 2024-05-16 晚上9.33.05](https://hackmd.io/_uploads/rJTMsFQ7C.png) ## Taask3 1. 接著要幫server生成一個證書 - 在生成證書之前,我們要先複製`/usr/lib/ssl/openssl.cnf`到我們的資料夾:`cp /usr/lib/ssl/openssl.cnf myCA_openssl.cnf` - 將myCA_openssl.cnf中的: - Line.49: `unique_subject=no` - Line.68: `copy_extensions=copy` - uncomment掉(刪掉#) - 創建一堆有的沒的檔案、資料夾: - ![截圖 2024-05-16 晚上9.57.36](https://hackmd.io/_uploads/Hke1Z5QmC.png) - `openssl ca -config myCA_openssl.cnf -policy policy_anything -md sha256 -days 3650 -in server.csr -out server.crt -batch -cert ca.crt -keyfile ca.key` - ![截圖 2024-05-16 晚上9.59.28](https://hackmd.io/_uploads/r1AHWcmX0.png) - 記得密碼是剛剛我設定的`0000` ## Task4 1. 將`server.crt`及`server.key`複製到certs的資料夾中: - ![截圖 2024-05-16 晚上10.19.37](https://hackmd.io/_uploads/SJN-85Q7A.png) - 修改Dockerfile: - ![截圖 2024-05-16 晚上10.21.13](https://hackmd.io/_uploads/HJED857XR.png)主要就是將bank32什麼的改成server - 修改bank32_apache_ssl.conf: - ![截圖 2024-05-16 晚上10.29.36](https://hackmd.io/_uploads/Skj8uq770.png) 2. 啟動docker: - `dcbuild` and `dcup` - ![截圖 2024-05-16 晚上10.32.29](https://hackmd.io/_uploads/SJKbtq7QC.png) 3. 開另一個terminal視窗,check一下自己當前的docker有哪些運行著(不一定跟我的一樣) - `dockps` - 反白的應該會跟我的ID不一樣,看自己的,然後sh進去那個container:![截圖 2024-05-16 晚上10.33.03](https://hackmd.io/_uploads/BkjQFcmXR.png) - `service apache2 start`後,需要輸入密碼,密碼是:dees - ![截圖 2024-05-16 晚上10.34.21](https://hackmd.io/_uploads/Bk_uK9mQR.png) 4. 回到剛剛的terminal,把`ca.crt`複製到`volumes`資料夾當中:![截圖 2024-05-16 晚上10.39.43](https://hackmd.io/_uploads/S1j2q9mQ0.png) 5. 用firefox打開https://www.bank32.com,注意一定要用https,因為這邊就是要破解https加密的網域: - ![截圖 2024-05-16 晚上10.41.56](https://hackmd.io/_uploads/Hk1Ho5X7R.png) - 打開about:preferences#privacy,滑到底下Security的地方有View Certificates - ![截圖 2024-05-16 晚上10.42.43](https://hackmd.io/_uploads/H1Avj5QmC.png) - 點進去之後,在Authorties tag下import剛剛的ca.crt: - ![截圖 2024-05-16 晚上10.43.48](https://hackmd.io/_uploads/rJyno9QmA.png) - 選Trust this CA to identify web sites -> OK - 得到綠色的Hello, world! 代表我們被網站接受CA了: - ![截圖 2024-05-16 晚上10.45.07](https://hackmd.io/_uploads/Sk0xnqXQ0.png) ## Task5/6 這邊其實就是換個網站,然後把上面的task1~4再做一次,看上面的csdn是可以打中國東南大學的校網,或許可以試試看打師大的校網?