导航:首页 > 证书转让 > 证书中的公钥

证书中的公钥

发布时间: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