導航:首頁 > 證書轉讓 > 證書中的公鑰

證書中的公鑰

發布時間:2021-08-01 18:47:33

Ⅰ 公鑰證書的在組織中的證書使用

很多組織安裝有自己的證書頒發機構,並將證書頒發給內部的設備、服務和雇員,以創建更安全的計算環境。大型組織可能有多個證書頒發機構,它們被設置在指向某個根證書頒發機構的分層結構中。這樣,雇員的證書存儲區中就可能有多個由各種內部證書頒發機構所頒發的證書,而所有這些證書頒發機構均通過到根證書頒發機構的證書路徑共享一個信任連接。
當雇員利用虛擬專用網路 (VPN) 從家裡登錄到組織的網路時,VPN 伺服器可以提供伺服器證書以建立起自己的身份。因為公司的根頒發機構被信任,而公司根證書頒發機構頒發了 VPN 伺服器的證書,所以,客戶端計算機可以使用該連接,並且雇員知道其計算機實際上連接到組織的 VPN 伺服器。
在數據可以經過 VPN 連接進行交換之前,VPN 伺服器還必須能夠驗證 VPN 客戶端的身份。或者通過交換計算機證書發生計算機級別的身份驗證,或者通過使用點對點協議 (PPP) 身份驗證方法,發生用戶級別的身份驗證。對於 L2TP(第二層隧道協議)/IPSec 連接,客戶端和伺服器雙方均需要計算機證書。
客戶端計算機證書可以服務於多個目的,這些目的大多數是基於身份驗證的,這就允許客戶端使用很多組織的資源,而不需要為每個資源分別准備證書。例如,客戶端證書可能允許 VPN 連接,還允許訪問公司存儲 intranet 網站、產品伺服器以及存儲雇員數據的人力資源資料庫。
VPN 伺服器證書還可能服務於多個目的。相同的證書可能各種目的:確認電子郵件伺服器、Web伺服器或者應用程序伺服器的身份。頒發證書的證書頒發機構決定每個證書的用途數目。

Ⅱ 公鑰證書的證書使用

因為證書通常用來為實現安全的信息交換建立身份並創建信任,所以證書頒發機構 (CA) 可以把證書頒發給人員、設備(例如計算機)和計算機上運行的服務(例如 IPSec)。
某些情況下,計算機必須能夠在高度信任涉及交易的其他設備、服務或個人的身份的情況下進行信息交換。某些情況下,人們需要在高度信任涉及交易的其他設備、服務或個人的身份的情況下進行信息交換。運行在計算機上的應用程序和服務也頻繁地需要確認它們正在訪問的信息來自可信任的信息源。
當兩個實體(例如設備、個人、應用程序或服務)試圖建立身份和信任時,如果兩個實體都信任相同的證書頒發機構,就能夠在它們之間實現身份和信任的結合。一旦證書主題已呈現由受信任的 CA 所頒發的證書,那麼,通過將證書主題的證書存儲在它自己的證書存儲區中,並且(如果適用)使用包含在證書中的公鑰來加密會話密鑰以便所有與證書主題隨後進行的通訊都是安全的,試圖建立信任的實體就可以繼續進行信息交換,。
例如,使用 Internet 進行聯機銀行業務時,知道您的 Web 瀏覽器正在與銀行的 Web 伺服器直接和安全地通訊就是很重要的。在發生安全的交易之前,您的 Web 瀏覽器必須能夠簽定 Web 伺服器的身份。就是說,進行交易之前,Web 伺服器必須能夠向您的 Web 瀏覽器證明它的身份。Microsoft Internet Explorer 使用安全套接字層 (SSL) 來加密消息並在 Internet 上安全地傳輸它們,而大多數其他新式 Web 瀏覽器和 Web 伺服器也使用該技術。
當您使用啟用 SSL 的瀏覽器連接到聯機銀行的 Web 伺服器時,如果該伺服器擁有證書頒發機構(例如 Verisign)頒發的伺服器證書,那麼將發生如下事件:
您使用 Web 瀏覽器訪問銀行的安全聯機銀行登錄網頁。如果使用的是 Internet Explorer,一個鎖形圖標將出現在瀏覽器狀態欄的右下角,以表示瀏覽器連接到的是安全 Web 站點。其他瀏覽器以其他方式表示安全連接。
銀行的 Web 伺服器將伺服器證書自動地發送到您的 Web 瀏覽器。
為了驗證 Web 伺服器的身份,您的 Web 瀏覽器將檢查您計算機中的證書存儲區。如果向銀行頒發證書的證書頒發機構是可信任的,則交易可以繼續,並且將把銀行證書存儲在您的證書存儲區中。
要加密與銀行 Web 伺服器的所有通訊,您的 Web 瀏覽器可創建唯一的會話密鑰。您的 Web 瀏覽器用銀行 Web 伺服器證書來加密該會話密鑰,以便只有銀行 Web 伺服器可以讀取您的瀏覽器所發送的消息。(這些消息中的一部分將包含您的登錄名和密碼以及其他敏感信息,所以該等級的安全性是必需的。)
建立安全會話,並且在您的 Web 瀏覽器和銀行的 Web 伺服器之間以安全方式發送敏感信息。
詳細信息,請參閱證書安全性
當您將軟體代碼從 Internet 下載、從公司 intranet 上安裝、或者購買光碟並安裝在計算機上時,還可以用證書來確認在這些軟體代碼的真實性。無簽名軟體(沒有有效的軟體發布商證書的軟體)可以威脅到計算機和存儲在計算機上的信息。
如果用信任的證書頒發機構所頒發的有效證書對軟體進行了簽名,您就知道軟體代碼沒有被篡改,可以安全安裝在計算機上。在軟體安裝期間,系統會提示您確認是否信任軟體製造商(例如,Microsoft Corporation)。您還可以看到其他選項,問您是否始終信任來自特定軟體製造商的軟體內容。如果您選擇信任該製造商的內容,那麼他們的證書將存入您的證書存儲區,並且它們的其他軟體產品就可以在預定義的信任環境下安裝到您的計算機。在預定義信任的環境中,您可以安裝製造商的軟體,而不會被提示是否信任它們,因為您的計算機上的證書已聲明您信任該軟體的製造商。
與其他證書一樣,這些用來確認軟體真實性和軟體發布商身份的證書可還以用於其他目的。例如,如果把「證書」管理單元設置為按目的查看證書,則「代碼簽名」文件夾可能包含由 Microsoft Root Authority 頒發給 Microsoft Windows Hardware Compatibility 的證書。這個證書有三個目的:
確保軟體來自該軟體發布商
保護軟體在發布之後不發生改變
提供 Windows 硬體驅動程序確認

Ⅲ SSL中,公鑰,私鑰,證書的後綴名都是些啥

1_root_bundle.crt是根證書鏈(公鑰)
2_ domainname.com.key為私鑰
其中:證書公鑰、私鑰文件一般以域名命名;證書後綴名crt和cer

Ⅳ 如何用C++實現讀取證書文件中的公鑰數據

在C++下,我使用OPENSSL庫生成了RSA的公私鑰對與DES加密之用的會話密鑰,並將這三者及加密結果寫入文件以備在Java環境下使用。

在C++程序中,我使用使用公鑰來加密了DES的會話密鑰,然後在Java下使用私鑰來解密會話密鑰;在運算結果中,我未做其它方面的碼制轉換,即按密鑰的初始格式DER編碼,數學運算結果也是按DER編碼來實現。

在Java程序中,我從之前所存儲的幾個文件中取得密鑰與加密結果來做解密。我使用了BC的JCE,即bcprov-jdk14-119.jar,在使用之前,需要先安裝此JCE:

假設JDK:jdk1.4\jre\
把BC包放到JRE下的ext:jdk1.4\jre\lib\ext
修改文件jdk1.4\jre\lib\security\java.security:
#
# List of providers and their preference orders (see above):
#
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.net.ssl.internal.ssl.Provider
security.provider.3=com.sun.rsajca.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider

security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider

======================================================================

C++程序源碼:

#include
#include
#include
//#define _RSA_KEY_PAIR_GENERATE_//密鑰是否要生成 只需要在第一次運行時打開此宏

#define _RSA_KEY_PAIR_TOFILE_//密鑰對是否要寫入文件

#define MAX_RSA_KEY_LENGTH 512 //密鑰的最大長度是512位元組

#define PUBKEY_ENCRYPT
#define PRIKEY_DECRYPT

#pragma comment(lib, "../lib/libeay32.lib")
static const char * PUBLIC_KEY_FILE = "pubkey.key";
static const char * PRIVATE_KEY_FILE = "prikey.key";

int RsaKeyPairGen(void)
{
RSA *rsa = NULL;

#ifdef_RSA_KEY_PAIR_GENERATE_
//生成RSA密鑰對:
rsa = RSA_new();
rsa = RSA_generate_key(1024, 0x10001, NULL, NULL);
#endif

//把密鑰對寫入文件,以後從文件里讀取
#ifdef _RSA_KEY_PAIR_TOFILE_
unsigned char ucPubKey[MAX_RSA_KEY_LENGTH] = {0}, ucPriKey[MAX_RSA_KEY_LENGTH] = {0};
int len = i2d_RSAPublicKey(rsa,NULL);
unsigned char* pt = ucPubKey;
len = i2d_RSAPublicKey(rsa, &pt);

FILE *fpubkey = NULL;
fpubkey = fopen(PUBLIC_KEY_FILE, "wb");
if(fpubkey == NULL)
{
cout << "fopen pubkey.key failed!" << endl;
return 0x01;
}
fwrite(ucPubKey, 1, len, fpubkey);
fclose(fpubkey);

len = i2d_RSAPrivateKey(rsa,NULL);
unsigned char* pt2 = ucPriKey;
len = i2d_RSAPrivateKey(rsa,&pt2);
FILE *fprikey = NULL;
fprikey = fopen(PRIVATE_KEY_FILE, "wb");
if(fprikey == NULL)
{
cout << "fopen prikey.key failed!" << endl;
return 0x02;
}
fwrite(ucPriKey, 1, len, fprikey);
fclose(fprikey);
#endif

if(rsa != NULL)
{
RSA_free(rsa);
rsa = NULL;
}
return 0;
}

//從文件里讀取私鑰的數據,取得RSA格式的私鑰:
int GetPriKey(unsigned char *pucPriKeyData, unsigned long KeyDataLen, RSA* *priRsa)
{
unsigned char *Pt = pucPriKeyData;
*priRsa = d2i_RSAPrivateKey(NULL, &Pt, KeyDataLen);
if(priRsa == NULL)
{
cout << "priRsa == NULL!" << endl;
return 0x22;
}
return 0;
}

//取得RSA格式的公鑰:
int GetPubKey(unsigned char *pucPubKeyData,unsigned long KeyDataLen, RSA* *pubRsa)
{
unsigned char *Pt = pucPubKeyData;
*pubRsa = d2i_RSAPublicKey(NULL, &Pt, KeyDataLen);
if(pubRsa == NULL)
{
cout << "pubRsa == NULL!" << endl;
return 0x31;
}
return 0;
}

//公鑰加密會話密鑰:
int encSessionKeybyRsaPubKey(RSA *rsa, unsigned char *ucKey, unsigned long ulKeyLen,
unsigned char *outData, unsigned long *pulOutLen)
{
return (*pulOutLen = RSA_public_encrypt(ulKeyLen, ucKey, outData, rsa, 1));
}

//私鑰解密會話密鑰:
int decSessionKeybyRsaPriKey(RSA *rsa, unsigned char *InData, unsigned long ulDataLen,
unsigned char *ucKey, unsigned long *pulKeyLen)
{
return (*pulKeyLen = RSA_private_decrypt(ulDataLen, InData, ucKey, rsa, 1));
}

int main(int argc, char* argv[])
{
unsigned char ucKey[8] = {0x01, 0x03, 0x99, 0x4, \
0x80, 0x65, 0x34, 0x08};
unsigned char ucEncryptedKey[512] = {0}, ucDecryptedKey[512] = {0};
unsigned long encrypted_len = 0, decrypted_len = 0;

#ifdef _RSA_KEY_PAIR_GENERATE_
RsaKeyPairGen();
#endif

//取得公鑰:
unsigned char ucPubKey[MAX_RSA_KEY_LENGTH] = {0};

FILE *fpubkey = NULL;
fpubkey = fopen(PUBLIC_KEY_FILE, "rb");
if(fpubkey == NULL)
{
cout << "fopen pubkey.key failed!" << endl;
return 0x03;
}
fseek(fpubkey, 0, SEEK_END);
int len_PK = ftell(fpubkey);
fseek(fpubkey, 0, SEEK_SET);
fread(ucPubKey, 1, len_PK, fpubkey);
fclose(fpubkey);

#ifdef PUBKEY_ENCRYPT
RSA *pRsaPubKey = NULL;
pRsaPubKey = RSA_new();

GetPubKey(ucPubKey, len_PK, &pRsaPubKey);
//公鑰加密:
encSessionKeybyRsaPubKey(pRsaPubKey, ucKey, sizeof(ucKey), ucEncryptedKey, &encrypted_len);
//write to file:
FILE *fp = NULL;
fp = fopen("ucKey.data", "wb");
fwrite(ucEncryptedKey, 1, encrypted_len, fp);
fclose(fp);

if(pRsaPubKey != NULL)
{
RSA_free(pRsaPubKey); pRsaPubKey = NULL;
}
#endif

//取得私鑰:
unsigned char ucPriKey[MAX_RSA_KEY_LENGTH] = {0};

FILE *fprikey = NULL;
fprikey = fopen(PRIVATE_KEY_FILE, "rb");
if(fprikey == NULL)
{
cout << "fopen prikey.key failed!" << endl;
return 0x02;
}
fseek(fprikey, 0, SEEK_END);
int len_SK = ftell(fprikey);
fseek(fprikey, 0, SEEK_SET);
fread(ucPriKey, 1, len_SK, fprikey);
fclose(fprikey);

#ifdef PRIKEY_DECRYPT
RSA *pRsaPriKey = NULL;
pRsaPriKey = RSA_new();

GetPriKey(ucPriKey, len_SK, &pRsaPriKey);
//私鑰解密:
FILE *fp1 = NULL;
fp1 = fopen("ucKey.data", "rb");
int len = ftell(fp1);
fseek(fp1, 0, SEEK_SET);
fread(ucPriKey, 1, len_SK, fp1);
fclose(fp1);
decSessionKeybyRsaPriKey(pRsaPriKey, ucEncryptedKey, encrypted_len, ucDecryptedKey, &decrypted_len);
if(pRsaPriKey != NULL)
{
RSA_free(pRsaPriKey); pRsaPriKey = NULL;
}

//數據對比:
if(0 == memcmp(ucKey, ucDecryptedKey, decrypted_len))
{
cout << "OK!" << endl;
}
else
{
cout << "FAILED!" << endl;
}
#endif

return 0;
}

Ⅳ 老師你好,在ssl證書中,cer是公鑰證書,key是私鑰證書,crt是證書鏈對嗎

一、SSL證書文件

如圖所示,就是一些SSL證書文件。上圖帶有root CA 字樣的證書文件就是根證書, 然後帶intermediate ca 字樣的就是中間證書文件, 最後一個 ssl servercertificate 字樣的證書即為證書文件。

了解認識SSL證書文件,才能更好的去安裝SSL證書。雖然大部分時候直接安裝證書文件,瀏覽器也會顯示安全,但是由於一些瀏覽器會自動補齊證書鏈,但是證書鏈缺失的話,一些手機端或者部分瀏覽器可能會報不安全的提醒,所以在安裝的時候建議安裝完整的證書文件,補齊證書鏈。

二、SSL證書格式

在SSL證書源文件中你會發現有很多格式。不同的web伺服器對於證書的格式是有要求的,接下來也帶大家了解下不同格式的證書文件。

PEM:- Privacy Enhanced Mail,打開看文本格式,以」—–BEGIN…」開頭, 「—–END…」結尾,內容是BASE64編碼.上述一般證書文件 ,中間證書和根證書,證書文件很多都是pem格式的。Apache和NIgnix伺服器偏向於使用這種編碼格式.

DER:這種格式也是常見的證書格式,跟pem類似,中間證書和根證書,證書文件很多都是DER的,Java和Windows伺服器偏向於使用這種編碼格式。

JKS :jks是Java密鑰庫(KeyStore)比較常見的一種格式。一般可用通過cer 或者pem 格式的證書以及私鑰的進行轉化為jks格式,有密碼保護。所以它是帶有私鑰的證書文件,一般用戶tomcat環境的安裝

PFX:pfx格式的證書 也是由cer 或者pem格式的證書文件以及私鑰轉化而來,所以該證書文件也是帶有私鑰的證書文件,一般用於iis 環境的證書安裝。

Ⅵ 公鑰證書的證書

可以為各種功能頒發證書,例如 Web 用戶身份驗證、Web 伺服器身份驗證、安全電子郵件(安全/多用途 Internet 郵件擴展 (S/MIME))、Internet 協議安全 (IPSec)、傳輸層安全 (TLS)以及和代碼簽名。證書還可以從一個證書頒發機構(CA) 頒發給另一個證書頒發機構,以便創建證書層次結構。
接收證書的實體是證書的「主題」。證書的頒發者和簽名者是證書頒發機構。
通常,證書包含以下信息:
主體的公鑰值
主體標識符信息(如名稱和電子郵件地址)
有效期(證書的有效時間)
頒發者標識符信息
頒發者的數字簽名,用來證實主題的公鑰和主題的標識符信息之間綁定關系的有效性
證書只有在指定的期限內才有效;每個證書都包含有效期的起止日期,它們是有效期的界限。一旦到了證書的有效期,到期證書的主題就必須申請一個新的證書。
某些情況下有必要撤消證書中所聲明的綁定關系,這時,可以由頒發者吊銷該證書。每個頒發者維護一個證書吊銷列表,程序可以使用該列表檢查任意給定證書的有效性。
證書的主要好處之一是主機不必再為單個主題維護一套密碼,這些單個主題進行訪問的先決條件的是需要通過身份驗證。相反,主機只需在證書頒發者中建立信任。
當主機(如安全 Web 伺服器)指派某個頒發者為受信任的根頒發機構時,主機實際上是信任該頒發者過去常用來建立所頒發證書的綁定關系的策略。事實上,主機信任頒發者已經驗證了證書主體的身份。主機通過將包含頒發者公鑰的頒發者自簽名證書放到主機的受信任根證書頒發機構的證書存儲區,將該頒發者指定為受信任的根頒發機構。中間的或從屬的證書頒發機構受到信任的條件是,他們擁有受信任根證書頒發機構的有效證書路徑。
有關證書的詳細信息,請參閱理解證書。

Ⅶ 私鑰、公鑰、證書的區別和關系

私鑰是要求你輸入個人密碼才可訪問的,一般網上銀行之類可用到。
公鑰不要求設專置密碼,是已屬經默認了的,一般上一些安全性要求不高的網站或共享資源,如區域網。
證書是一種網站加密瀏覽方式,只有允許了才可訪問,一般為安全性較高的網站,如網上銀行;可以訪止黑客盜取客戶資料。

Ⅷ ssl證書的公鑰私鑰需要設置嗎

需要設置的,具體設置方法可以咨詢SSL證書提供商。
SSL證書的公鑰內密碼體制分為三個容部分,即公鑰、私鑰和加密解密演算法,顧名思義,加密是通過加密演算法和公鑰對明文傳輸數據進行加密,得到密文,加密過程是需要用到公鑰的。
解密是反過來,通過解密演算法和私鑰對密文進行解密,得到明文。解密過程需要用到解密演算法和私鑰。所以上文提到由公鑰加密的內容,只能由對應的私鑰進行解密,如果是公鑰加密的內容,不知道私鑰那是無法解密的,公鑰和私鑰保證了數據傳輸的安全性。
公鑰和演算法都是公開的,私鑰是保密的,是需要自己手動設置的。大家都用公鑰進行加密,但是只有私鑰的持有者才能解密。在實際的使用中,有需要的人會生成一對公鑰和私鑰,把公鑰發布出去給別人使用,自己保留私鑰。
數字證書是一個經證書授權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字簽名。所以ssl證書中肯定包含唯一匹配的公鑰和私鑰。網站擁有者向CA機構申請ssl證書時,證書請求文件中只包含公鑰,不包含私鑰。證書私鑰由網站保存,證書請求文件提交給CA機構進行認證和簽名後對外公開。

閱讀全文

與證書中的公鑰相關的資料

熱點內容
樂聚投訴 瀏覽:523
輪子什麼時候發明 瀏覽:151
馬鞍山陶世宏 瀏覽:16
馬鞍山茂 瀏覽:5
通遼工商局咨詢電話 瀏覽:304
誰發明的糍粑 瀏覽:430
國家公共文化服務示範區 瀏覽:646
pdf設置有效期 瀏覽:634
廣告詞版權登記 瀏覽:796
基本公共衛生服務考核方案 瀏覽:660
公共服務平台建設領導小組 瀏覽:165
人類創造了那些機器人 瀏覽:933
公共文化服務保障法何時實施 瀏覽:169
遼寧育嬰師證書領取 瀏覽:735
劃撥土地使用權轉讓能轉讓嗎 瀏覽:97
2019年公需科目知識產權考試答案 瀏覽:256
關於知識產權管理辦法 瀏覽:331
公共衛生服務培訓筆記 瀏覽:532
基層公共衛生服務技術題庫 瀏覽:497
中國城市老年體育公共服務體系的反思與重構 瀏覽:932