
# 什么是公钥和私钥？
公钥和私钥就是俗称的不对称加密方式。公钥（Public Key）与私钥（Private Key）是通过一种算法得到的一个密钥对（即一个公钥和一个私钥），公钥是密钥对中公开的部分，私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名，或加密可以用相应的私钥解密的数据。
通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候，如果用其中一个密钥加密一段数据，则必须用另一个密钥才能解密。比如用公钥加密的数据就必须用私钥才能解密，如果用私钥进行加密也必须用公钥才能解密，否则将无法成功解密。
![](https://support.huaweicloud.com/ccm_faq/public_sys-resources/note_3.0-zh-cn.png)
私钥一般情况都是由证书持有者在自己本地生成或委托受信的第三方生成的。华为云云证书与管理中申请证书时，既支持生成私钥（"证书请求文件"选择"系统生成CSR"），也支持使用用户自己生成的私钥（"证书请求文件"选择"自己生成CSR"）。建议您申请证书时，选择"系统生成CSR"，其安全性更高，也更便于统一管理。如果您选择"自己生成CSR"，则生成的私钥需要符合[创建私钥]中的要求，并自行妥善保管。一旦发生证书私钥丢失的事件，请立刻吊销已有证书并对相关域名重新申购证书。以避免因私钥丢失导致网站信息泄露等恶性事件的发生。
#### 数字证书的原理
数字证书采用公钥体制，即利用一对互相匹配的密钥对进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥（私钥），用它进行解密和签名；同时设定一把公共密钥（公钥）并由本人公开，为一组用户所共享，用于加密和验证签名。
由于密钥仅为本人所有，这样就产生了别人无法生成的文件，也就形成了数字签名。
数字证书是一个经证书授权中心（CA）数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
 #### 创建私钥
华为云云证书与管理对您的私有密钥的加密算法和长度有如下要求：
- 加密算法使用RSA算法
- 加密长度至少2048位
  ![](https://support.huaweicloud.com/ccm_faq/public_sys-resources/note_3.0-zh-cn.png)
  建议您使用2048位加密长度的SHA256摘要算法。
  
您可以通过以下两种方式创建您的私钥：
- 使用OpenSSL工具生成私钥
  OpenSSL是一个强大且应用广泛的安全基础库工具，您可以从"http://www.openssl.org/source/"下载最新的OpenSSL工具安装包。
  ![](https://support.huaweicloud.com/ccm_faq/public_sys-resources/notice_3.0-zh-cn.png)
  要求OpenSSL版本必须是1.0.1g或以上版本。
  安装OpenSSL工具后，在命令行模式下运行openssl genrsa -out myprivate.pem 2048即可生成您的私钥文件。
  - "myprivate.pem"即为您的私钥文件。
  
  - "2048"指定加密长度。
   
- 使用Keytool工具导出私钥 Keytool工具是JDK中自带的密钥管理工具，可以制作Keystore（jks）格式的证书文件，您可以从"http://www.oracle.com/technetwork/java/javase/downloads/index.html"下载JDK工具包来获取Keytool工具。
  由于使用Keytool工具制作的公钥和私钥默认是不可以导出的，需要您从已经创建好的".keystore"文件中导出私钥。
  在导出的文件中，以下部分的内容即是您的私钥：
  ```
  -----BEGIN RSA PRIVATE KEY-----
  ......
  -----END RSA PRIVATE KEY-----
  ```
  或者
  ```
  -----BEGIN PRIVATE KEY-----
  ......
  -----END PRIVATE KEY-----
  ```
  ![](https://support.huaweicloud.com/ccm_faq/public_sys-resources/notice_3.0-zh-cn.png)
  无论您通过哪种方式生成密钥，请您完善地保管好您的私钥文件，私钥文件一旦丢失或者损坏，您申请的对应的公钥、及数字证书都将无法使用。
  
 
