---
title: 自签名证书及私钥
description: "该方法仅供调测环境下使用。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/aoe/aoerc_16_0079.html
sourcePath: /source/zh/canncommercial/900/devaids/aoe/aoerc_16_0079.html
indexId: f0e490fe144d70f29b9ee67e0325d9591e3d77b46fd744f774c9d2765ace1d1360
---
# 自签名证书及私钥

该方法仅供调测环境下使用。

执行如下脚本之前，请确保系统已安装OpenSSL 1.1.1。并执行如下命令。

cd ${HOME}

openssl rand -writerand .rnd


下面内容用户可以直接拷贝后修改，做成shell脚本。执行shell脚本后即可在当前目录下生成证书和私钥，将证书和私钥分别拷贝到开发环境和运行环境后才能支撑调优业务。

```
DEVICE_IP=10.174.229.196 # your device ip
HOST_IP=10.175.85.66 # your host ip
PASS_PHRASE=Ncx12345 # your pass phrase
KEY_LEN=3072 # [3072, 4096]
VALID_DAYS=365 # the cert will expire after the valid days
COUNTRY=CN # your country name abbr. (2 letter code)
STATE=Zhejiang # your province name
LOCATION=Hangzhou # your city name
ORGANIZATION=ABC # your company name
ORGANIZATION_UNIT=DEF # your section name
COMMON_NAME_ROOT=www.test.com # your domain name
ENCRYPT_MODE=aes256 # [aes256, aes128]
########## 该分割线以上内容请根据实际情况修改，以下内容不建议修改。##########
#generate conf
rm -rf host-ext.cnf  device-ext.cnf
echo "[ ext ]" >> host-ext.cnf
echo "subjectAltName=IP:${HOST_IP}" >> host-ext.cnf
echo "[ ext ]" >> device-ext.cnf
echo "subjectAltName=IP:${DEVICE_IP}" >> device-ext.cnf
#generate root cert
openssl req -x509 -newkey rsa:${KEY_LEN} -days ${VALID_DAYS} -nodes -keyout ca-key.pem -out ca-cert.pem -subj "/C=${COUNTRY}/ST=${STATE}/L=${LOCATION}/O=${ORGANIZATION}/OU=${ORGANIZATION_UNIT}/CN=${COMMON_NAME_ROOT}" -addext keyUsage=keyCertSign
#generate device cert request
openssl req -newkey rsa:${KEY_LEN} -nodes -keyout device-key.pem -out device-cert.csr -subj "/C=${COUNTRY}/ST=${STATE}/L=${LOCATION}/O=${ORGANIZATION}/OU=${ORGANIZATION_UNIT}/CN=NCS"
#generate device cert
openssl x509 -req -in device-cert.csr -days ${VALID_DAYS} -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out device-cert.pem -extensions ext -extfile device-ext.cnf
#generate host cert request
openssl req -newkey rsa:${KEY_LEN} -nodes -keyout host-key.pem -out host-cert.csr -subj "/C=${COUNTRY}/ST=${STATE}/L=${LOCATION}/O=${ORGANIZATION}/OU=${ORGANIZATION_UNIT}/CN=NCA"
#generate host cert
openssl x509 -req -in host-cert.csr -days ${VALID_DAYS} -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out host-cert.pem -extensions ext -extfile host-ext.cnf
#encryt private key
openssl rsa -in host-key.pem -passout pass:${PASS_PHRASE} -${ENCRYPT_MODE} -out host-key.pem
openssl rsa -in device-key.pem -passout pass:${PASS_PHRASE} -${ENCRYPT_MODE} -out device-key.pem
```


经过上述步骤生成的文件说明如下，需要严格按照表1将CA、证书、私钥拷贝到正确的设备。


**表1 文件说明**

| 文件名 | 作用 |
| --- | --- |
| ca\-cert.pem | 根CA，需要拷贝到开发环境和运行环境上。 |
| host\-key.pem | 开发环境端私钥，需要拷贝到开发环境上。 |
| host\-cert.pem | 开发环境端证书，需要拷贝到开发环境上。 |
| device\-key.pem | 运行环境端私钥，需要拷贝到运行环境上。 |
| device\-cert.pem | 运行环境端证书，需要拷贝到运行环境上。 |
| ca\-key.pem | 中间过程文件，可忽略。 |
| ca\-cert.srl | 中间过程文件，可忽略。 |
| host\-cert.csr | 中间过程文件，可忽略。 |
| device\-cert.csr | 中间过程文件，可忽略。 |
| host\-ext.cnf | 中间过程文件，可忽略。 |
| device\-ext.cnf | 中间过程文件，可忽略。 |
