題 我可以成為本地網絡的根證書頒發機構嗎?


這可能聽起來很瘋狂,但我可以成為根證書頒發機構嗎?我的意思是,我家裡有很多電腦和智能設備。

  1. 遠程桌面會警告證書不受信任,因為它是由服務器本身發出的。我使用證書管理器將它添加到受信任的根權限,但它仍然會發出警告。
  2. 當我從網絡共享文件夾運行EXE時,它也會警告EXE沒有被簽名。

  3. SSH還警告證書

  4. 我還運行一個Web服務器供我自己使用。我知道這不是必要的,如果它是在HTTPS上可能會更好,以防有人嗅到我的Wi-Fi。

因此,為了做到這些,我可以頒發證書,我的所有設備都應該接受這些證書作為有效的,可信的證書。以下是我想像中的場景:

  1. 在我的一台PC上安裝證書生成程序 是我的根本權威。
  2. 製作根證書,並將其公鑰複製到我的所有設備,並讓它們作為受信任的根證書。
  3. 頒發由根證書的私鑰簽名的本地使用的多個證書。
  4. 在步驟3中生成的證書被我的所有設備接受為有效證書,而無需進一步繁瑣的工作。

這樣的事情是可能的,還是我應該購買真正的證書?再次,僅用於當地的用途。


6
2017-08-12 12:26


起源


technet.microsoft.com/en-us/library/cc772393(v=ws.10).aspx - ta.speot.is
@ ta.speot.is您不需要Active Directory的所有權重。有可能 輕鬆完成 同 makecert - Scott Chamberlain
@Sin,您使用的是Windows,Mac還是Linux?您想要做的事情很容易完成,但執行此操作的工具是特定於平台的。 - Scott Chamberlain


答案:


你可以按照我的方式完成它 這個 教程。

在Linux上創建專用證書頒發機構

本教程將向您展示如何創建自己的專用CA或證書頒發機構。這將使您有機會簽署自己的證書,而無需支付其他人。但是,由於您的私人CA不會被其他人信任,因此當其他人使用它時可能會發出警告。您需要將根證書添加到要信任CA的計算機。

我在2008年寫了一篇類似的文章(使用OpenSSL創建證書頒發機構和證書),但本教程取代了在舊版本中創建CA的說明。 安裝先決條件

我使用Fedora 18編寫了本教程。我需要的唯一先決條件是OpenSSL。

su -c 'yum install openssl'
Create Directory Structure

mkdir /home/cg/myca

cd /home/cg/myca/

mkdir private certs newcerts conf export csr

echo '01' > serial

touch index.txt

默認情況下,我們將在/ home / cg / myca目錄中運行所有命令,除非另有說明。 配置文件

vim /home/cg/myca/conf/caconfig.cnf

此文件將用作CA的默認配置文件。它應該類似於以下內容:

[ ca ]
default_ca = CA_default

[ CA_default ]
dir = /home/cg/myca/
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/certs/cacert.pem
serial = $dir/serial
#crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
#RANDFILE = $dir/private/.rand
x509_extensions = usr_cert
#crl_extensions = crl_ext
default_days = 3650
#default_startdate = YYMMDDHHMMSSZ
#default_enddate = YYMMDDHHMMSSZ
#default_crl_days= 30
#default_crl_hours = 24
default_md = sha1
preserve = no
#msie_hack
policy = policy_match

[ policy_match ]
countryName = match
stateOrProvinceName = match
localityName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ req ]
default_bits = 4096 # Size of keys
default_keyfile = key.pem # name of generated keys
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
#input_password
#output_password
string_mask = nombstr # permitted characters
req_extensions = v3_req

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = New York
localityName = Locality Name (city, district)
localityName_default = New York
organizationName = Organization Name (company)
organizationName_default = Code Ghar
organizationalUnitName = Organizational Unit Name (department, division)
organizationalUnitName_default = IT
commonName = Common Name (hostname, FQDN, IP, or your name)
commonName_max = 64
commonName_default = CGIT
emailAddress = Email Address
emailAddress_max = 40
emailAddress_default = codeghar@example.com

[ req_attributes ]
#challengePassword = A challenege password
#challengePassword_min = 4
#challengePassword_max = 20
#unstructuredName = An optional company name

[ usr_cert ]
basicConstraints= CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#nsComment = ''OpenSSL Generated Certificate''
#nsCertType = client, email, objsign for ''everything including object signing''
subjectAltName=email:copy
issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl = 
#nsRenewalUrl =
#nsCaPolicyUrl = 
#nsSslServerName =

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:TRUE
#keyUsage = cRLSign, keyCertSign
#nsCertType = sslCA, emailCA
#subjectAltName=email:copy
#issuerAltName=issuer:copy
#obj=DER:02:03

[ crl_ext ]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always

謝謝 http://wwwneu.secit.at/web/documentation/openssl/openssl_cnf.html 幫助這個文件。 生成根證書

您可以使用我們在上一步中創建的配置文件(caconfig.cnf)來回答證書生成期間提出的許多問題。只需運行以下命令並回答問題。大多數問題都有caconfig.cnf中提供的默認值。

openssl req -new -x509 -days 3650 -config conf / caconfig.cnf -keyform PEM -keyout private / key.ca.cg.pem -outform PEM -out certs / crt.ca.cg.pem

雖然我們在caconfig.cnf文件中指定了默認天數,但我們仍然需要在使用x509標誌時指定days標誌。如果我們不這樣做,則使用默認值30天創建證書。感謝Re:default_days問題和OpenSSL req(1)。

如果要提供自己的自定義值,可以改為運行以下命令。

openssl req -new -x509 -days 3650 -newkey rsa:4096 -extensions v3_ca -keyform PEM -keyout private / key.ca.cg.pem -outform PEM -out certs / crt.ca.cg.pem

系統會要求您輸入密碼。確保使用安全密碼,不要忘記密碼。您還將被問到其他相關問題。以下是該過程的示例輸出。

生成4096位RSA私鑰 .................................................. ............................ ++ .................................................. .................................................. .................................................. .................................................. ................................... ++ 將新私鑰寫入'private / key.ca.cg.pem' 輸入PEM密碼短語:

驗證 - 輸入PEM密碼短語:

您將被要求輸入將被合併的信息 進入您的證書申請。 您要輸入的是所謂的專有名稱或DN。 有很多字段,但你可以留空 對於某些字段,將有一個默認值,

如果輸入“。”,該字段將留空。

國名(2個字母代碼)[美國]: 州或省名(全名)[紐約]: 地點名稱(城市,地區)[紐約]: 組織名稱(公司)[Code Ghar]: 組織單位名稱(部門,部門)[IT]: 通用名稱(主機名,FQDN,IP或您的名字)[CGIT]: 電子郵件地址[codeghar@example.com]:

將分別在$ dir / private和$ dir / certs目錄中創建兩個文件key.ca.cg.pem和crt.ca.cg.pem。確保將這些文件保存在安全的位置並進行備份。

crt.ca.cg.pem是您的根證書,將用於簽署所有其他證書。 驗證根證書

您應該使用準確的信息驗證證書是否已正確創建。

openssl x509 -in certs / crt.ca.cg.pem -inform pem -noout -text 導出根證書

由於任何計算機都無法識別和信任此新創建的CA及其根證書,因此您需要在所有其他計算機上導入根證書。默認情況下,操作系統將具有可信CA的列表,您需要將CA導入該列表。該過程因不同的操作系統而異。 視窗

我們創建的根證書採用PEM編碼格式。對於Windows,我們需要它採用DER編碼格式。關於兩者之間差異的一個很好的資源是DER與CRT與CER與PEM證書以及如何轉換它們。

openssl x509 -in certs / crt.ca.cg.pem -outform der -out export / ca.cg.crt

驗證證書是否已成功創建。

openssl x509 -in export / ca.cg.crt -inform der -noout -text

獲得導出的文件後,將其複製到Windows計算機。您可以按照如何在Windows中導入受信任的根證書頒發機構提供的說明將證書導入到本地計算機上的受信任的根證書頒發機構存儲中。

您還可以將證書導出為PKCS12格式。感謝將用戶證書導入Windows證書存儲區以獲取此信息。

openssl pkcs12 -export -out export / ca.cg.p12 -in certs / crt.ca.cg.pem -inkey private / key.ca.cg.pem

系統將要求您提供用於創建根證書的密碼。您還將被要求提供新的“導出密碼”。

將.p12文件複製到Windows並雙擊它。將打開一個嚮導並指導您進行安裝。 結論

創建CA的過程非常簡單。接下來我將寫一篇關於簽署證書請求的文章。


3
2017-08-12 12:46





有一個很好的教程,用於設置自己的證書頒發機構 datacenteroverlords.com

創建自己的證書頒發機構的過程非常簡單:

  1. 創建私鑰
  2. 自簽名
  3. 在各種工作站上安裝根CA.

完成此操作後,您通過HTTPS管理的每台設備都需要通過以下步驟創建自己的證書:

  1. 為設備創建CSR
  2. 使用根CA密鑰簽署CSR

1
2018-05-27 17:40