OpenSSL 操作筆記 - 產生 CSR


有了 private key 之後就可以作 CSR 了, req 指令就是拿來產生 CSR 的, 使用時需要搭配 config file 一起使用, 即便給了滿滿的參數
req 還是會去找 distinguished_name 這個設定, config file 的筆記在這裡

參數簡介

以下列出幾個製作 CSR 常用的參數

  • -new
  • 製作 CSR 一定要加的參數, req 指令除了產生 CSR, 也能檢視 CSR, 下了 -new 代表要產生 CSR
  • -key filename
  • 設定製作 CSR 時用的 key, 若沒加入這個參數會產生一把新的 key, 可搭配 -keyform 設定格式
  • -newkey arg
  • 用來產生 CSR+private key, 相當於有 -new 沒 -key 的作用, 只是多了設定 private key 格式的功能, 雖然支援多種格式 但我只用過 rsa, 語法為 rsa:nbits
  • -keyout filename
  • 設定產生的 private key 路徑, 沒設的話會用 config file 的設定 (req section 的 default_keyfile)
  • -nodes
  • 若 private key 不加密可加入此參數
    與 key 相關的指令要小心處理, 否則 key 可能會被複寫, 這個指令遇到已存在的檔案不會詢問, 直接覆蓋掉
  • -config filename
  • 設定使用的 config file
  • -subj arg
  • 設定 subject, 格式為 /type0=value0/type1=value1/type2=...
req 指令除了製作 CSR 以外, 還可以製作 self signed certificate, 用來製作 root ca 非常方便, ROOT CA key+ certificate 可以一行指令解決
相關參數有
  • -x509
  • 製作 CSR 時補上這個參數就會直接輸出 self signed certificate, 而不是 CSR
  • -days n
  • 設定 certificate 有效時間, 開始時間為目前系統時間
  • -extensions section
  • 製作 certificate 用的 extension 欄位設定值

使用範例

  1. 無 prompt, 產生 private key + CSR, 適合用外部程式編輯好 config file 執行
  2. 製作 config file,demo.conf
    [ req ]
    default_keyfile = privkey.pem
    prompt = no
    distinguished_name = req_1
    
    [req_1]
    C =TW
    O= ABC
    OU = 1234
    CN = TEST Certificate
    
    再用以下指令即可
    openssl req -new -config demo.conf -nodes -out csr.pem
    
  3. 有 prompt, 產生 CSR, 適合手動敲指令, 先編好通用的 config file,執行時再動態變更設定
  4. 製作 config file,demo2.conf
    [ req ]
    default_keyfile = privkey.pem
    #prompt = no
    distinguished_name = req_1
    
    [req_1]
    C = Country Name (2 letter code)
    C_default=TW
    C_min=2
    C_max=2
    O = Organization Name (eg, company)
    O_default = ABCD
    O_max=64
    OU = Organizational Unit Name (eg, section)
    OU_default = 5566
    CN = Common Name (e.g. server FQDN or YOUR name)
    CN_default = 5978
    
    再用以下指令即可
    openssl req -new -config demo2.conf -key privkey.pem -out csr2.pem
    
    執行結果為
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [TW]:
    Organization Name (eg, company) [ABCD]:
    Organizational Unit Name (eg, section) [5566]:
    Common Name (e.g. server FQDN or YOUR name) [5978]:
    

沒有留言:

張貼留言