下午好我們繼續這個話題
今天我們進入實踐部分。 讓我們首先基於成熟的開源加密庫 openSSL 設置我們的 CA。 該算法已使用 Windows 7 進行測試。
安裝了openSSL後,我們可以通過命令行執行各種加密操作(例如創建密鑰和證書)。
動作算法如下:
- 下載安裝發行版 openssl-1.1.1g。
openSSL 有不同的版本。 Rutoken 的文檔表示需要 openSSL 版本 1.1.0 或更高版本。 我用的是openssl-1.1.1g版本。 你可以從官方網站下載openSSL,但是為了更容易安裝,你需要在網上找到windows的安裝文件。 我為你做了這個:slproweb.com/products/Win32OpenSSL.html
向下滾動頁面並下載 Win64 OpenSSL v1.1.1g EXE 63MB 安裝程序。 - 在計算機上安裝 openssl-1.1.1g。
安裝必須按照標準路徑進行,該路徑自動指示在C:Program Files文件夾中。 該程序將安裝在 OpenSSL-Win64 文件夾中。 - 為了按照您需要的方式設置 openSSL,可以使用 openssl.cfg 文件。 如果您按照上一段所述安裝了 openSSL,則此文件位於 C:\Program Files\OpenSSL-Win64bin 路徑中。 轉到存儲 openssl.cfg 的文件夾並使用(例如 Notepad++)打開此文件。
- 您可能猜到將通過更改 openssl.cfg 文件的內容來以某種方式配置證書頒發機構,您是完全正確的。 這需要自定義 [ ca ] 命令。 在 openssl.cfg 文件中,我們將進行更改的文本開頭為:[ ca ]。
- 現在我將給出一個設置示例及其描述:
[ ca ] default_ca = CA_default [ CA_default ] dir = /Users/username/bin/openSSLca/demoCA certs = $dir/certs crl_dir = $dir/crl database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/ca.crt serial = $dir/private/serial crlnumber = $dir/crlnumber crl = $dir/crl.pem private_key = $dir/private/ca.key x509_extensions = usr_cert
現在我們需要創建 demoCA 目錄和子目錄,如上例所示。 並將其沿著 dir 中指定的路徑放置在此目錄中(我有 /Users/username/bin/openSSLca/demoCA)。
正確拼寫 dir 非常重要 - 這是我們的認證中心所在目錄的路徑。 該目錄必須位於/Users 中(即位於某個用戶的帳戶中)。 如果您將此目錄放在例如 C:Program Files 中,系統將看不到帶有 openssl.cfg 設置的文件(至少對我來說是這樣)。
$dir - 此處替換 dir 中指定的路徑。
另一個重要的一點是創建一個空的index.txt 文件,沒有此文件,“openSSL ca ...”命令將無法工作。
您還需要有一個串行文件、一個根私鑰(ca.key)、一個根證書(ca.crt)。 下面將描述獲取這些文件的過程。
- 我們連接Rutoken提供的加密算法。
此連接發生在 openssl.cfg 文件中。- 首先,您需要下載必要的Rutoken算法。 這些是文件 rtengine.dll、rtpkcs11ecp.dll。
為此,請下載 Rutoken SDK:www.rutoken.ru/developers/sdk .Rutoken SDK 是為想要試用 Rutoken 的開發人員提供的一切。 有兩個使用不同編程語言使用 Rutoken 的單獨示例,並且提供了一些庫。 我們的庫 rtengine.dll 和 rtpkcs11ecp.dll 分別位於 Rutoken sdk 中的位置:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll非常重要的一點。 如果沒有安裝 Rutoken 驅動程序,則庫 rtengine.dll、rtpkcs11ecp.dll 將無法工作。 Rutoken 還必須連接到計算機。 (要安裝 Rutoken 所需的一切,請參閱文章的前一部分
habr.com/en/post/506450 ) - rtengine.dll 和 rtpkcs11ecp.dll 庫可以保存在用戶帳戶中的任何位置。
- 我們將這些庫的路徑寫入 openssl.cfg 中。 為此,請打開 openssl.cfg 文件,並將該行放在該文件的開頭:
openssl_conf = openssl_def
在文件末尾您需要添加:
[ openssl_def ] engines = engine_section [ engine_section ] rtengine = gost_section [ gost_section ] dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP default_algorithms = CIPHERS, DIGEST, PKEY, RAND
Dynamic_path - 您必須指定 rtengine.dll 庫的路徑。
MODULE_PATH - 您需要寫入 rtpkcs11ecp.dll 庫的路徑。
- 首先,您需要下載必要的Rutoken算法。 這些是文件 rtengine.dll、rtpkcs11ecp.dll。
- 添加環境變量。
請務必添加一個環境變量來指定 openssl.cfg 配置文件的路徑。 就我而言,OPENSSL_CONF 變量是使用路徑 C:Program FilesOpenSSL-Win64binopenssl.cfg 創建的。
在路徑變量中,必須指定openssl.exe所在文件夾的路徑,在我的例子中是:C:Program FilesOpenSSL-Win64bin。
- 現在您可以返回到步驟 5 並為 demoCA 目錄創建缺少的文件。
- 第一個重要的文件是串行文件,沒有它,任何事情都無法進行。 這是一個沒有擴展名的文件,其值應該是01。您可以自己創建這個文件,並在裡面寫入01。您也可以從Rutoken SDK中沿著路徑sdk/openssl/rtengine/samples/tool/demoCA下載它/。
demoCA目錄包含串行文件,這正是我們所需要的。 - 創建根私鑰。
為此,我們將使用 openSSL 庫命令,該命令必須直接在命令行上運行:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key
- 我們創建一個根證書。
為此,請使用以下 openSSL 庫命令:openssl req -utf8 -x509 -key ca.key -out ca.crt
請注意,生成根證書需要使用上一步中生成的根私鑰。 因此,命令行必須在同一目錄中啟動。
現在,一切都包含了 demoCA 目錄完整配置的所有缺失文件。 將創建的文件放置在第 5 點所示的目錄中。
- 第一個重要的文件是串行文件,沒有它,任何事情都無法進行。 這是一個沒有擴展名的文件,其值應該是01。您可以自己創建這個文件,並在裡面寫入01。您也可以從Rutoken SDK中沿著路徑sdk/openssl/rtengine/samples/tool/demoCA下載它/。
我們假設完成所有 8 點後,我們的認證中心已完全配置。
在下一部分中,我將描述我們將如何與認證機構合作以完成中描述的內容
來源: www.habr.com