ca子命令使用事前准备的CSR文件,可通过-selfsign选项指定私钥生成自签名证书。使用req子命令也可以生成自签名证书,自签名证书在实际的使用中用处一般是用来创建ca证书的,这篇文章介绍一下如何使用x509子命令结合自签名的ca证书对其他证书签名请求CSR文件进行签名。

事前准备: 准备自签名证书

有多种方式可以生成自签名证书,这里使用最为简单的方式,直接生成可以用作ca的私钥和证书文件。

[root@liumiaocn x509]# openssl req -new -x509 -keyout ca.key  -nodes -out ca.crt -subj "/C=CN/ST=LiaoNing/L=DaLian/O=devops/OU=unicorn/CN=devops.com"
Generating a RSA private key
...........................................................................................................................................+++++
............+++++
writing new private key to 'ca.key'
-----
[root@liumiaocn x509]# ls -l
total 8
-rw-r--r--. 1 root root 1342 Dec 14 21:04 ca.crt
-rw-------. 1 root root 1708 Dec 14 21:04 ca.key
[root@liumiaocn x509]#

结果确认

[root@liumiaocn x509]# openssl x509 -noout -in ca.crt -issuer -subject
issuer=C = CN, ST = LiaoNing, L = DaLian, O = devops, OU = unicorn, CN = devops.com
subject=C = CN, ST = LiaoNing, L = DaLian, O = devops, OU = unicorn, CN = devops.com
[root@liumiaocn x509]#
[root@liumiaocn x509]# openssl x509 -noout -in ca.crt -dates
notBefore=Dec 15 02:04:19 2019 GMT
notAfter=Jan 14 02:04:19 2020 GMT
[root@liumiaocn x509]#

详细信息如下所示:

[root@liumiaocn x509]# cat ca.key
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDVriM5yVAuDDOx
RO8i5h1ttuN405U+FvOqBPKvkSB9bOP5ewfUnQpJZqR45H1dXqQU3nSyZtbGMyvI
vbfu4ZItbcNuDUiPVeZIt938PfXauzTLJFneSkBMh3e08D4IIQC7xfRGY0eNljvN
E9aaQ610W5sn8UsHNS+M8/TQFuP7wHr4OUtVjkdQTgNdFZxIvuNbmZ47YxmsULgh
OpuRvLkluh4fJ1go7ourZRzyP+vTRmfQCsuwcx5P0aOGt1Sf7P7OjVyKaif5hJWl
fJaCr7fcUCggici9eWZq+AjfIGCzN9vAJ+ypQPhNrdOA1mk6IbBN5CiUOnPHMj+9
XOehzP6vAgMBAAECggEACxAN8NL0XL3y+y2Hd/YT9fcvBbVml6VWjindaquH1BaM
IwF0oVRUEQLIZx3lQ60/r3jo78eVPQOvM6Bm4m45RDLXmF4FsK4Q0xj53DJVBTMG
A7JpGLIdbBjjYLHDdGZJBG+2OuKu9KyfgfmR9cClPU301XePm9rsEE8dEJzuxrzT
KOT4V0JanwEdVTbop2mdgjRF3dodrnAgCwLqioEPKGUDCcZyji0cXCELMMYaTcov
dSs2uUfS8qi6ln/snyhavHcAHgO7raeLGDC4eYhQKFsnYONM8kGR8cRPS9aap0vX
uvXx2gyzpkv174cHCMsAxVxy7JQec8QETWD0nWrqUQKBgQDsUWt10BqfbPV7F5BE
FEdmtQHQBS04lO7R2fWVBCZNmG6JVWisLBslJF/IZZvGZHEItjAYWpCl6c5VYZ29
cdLqKefWtprymQrbD6HZbQWxZMvaBzaH7WLadgIKeId8dkjb8byXfFDgN/g2I1G2
TFVuVAeLUKDlgbViJXiadcb/JwKBgQDneg1+41V8LQEi6wnrTqCc4ZxnEBwcWlIY
I+MM7z/UZHbbRh/TZo4/k9EYWr86CeuvlC7CY1lJNMTQgRwSO2H98k3Oe+wNqUR7
AGcs4bIL2UabgcV/BEKYFC2FER7aSUUVxuYaZp1slptD675MyKyGwinaYERySdQU
fZ2uZe25OQKBgQCwk3HRGQsbfqW6MPQp+mETnEJbddLBSX9dLBg1HWGlbzWAxmGs
7FPoH9K2AT4xMlHHaaJsQBd+8UGsSIE90bQAJgnGRLFoffQ/lOGhfbXYQ/GR2vvi
+vx3Md/6hO7vj86HEYySQGCJ+SgtA50FsunOw1jTvw5KDu5CBK+l8kUb1wKBgQDX
evc1N8tMXVjBeKszMW6ynBNMneKNQkdJ0Z57W/y/awZ5+T2HPeENrjznvxJkpPeR
6w/cRT/ItibBMm8/SahfDkEABrwnu3rURfvF/BQSk6D3Akcnhn+3spDtXpKqAase
Kpnp2bySaWEASWRNdkGk8PqlHxiYi8GxkX5H6vrxgQKBgQDOsKRtCk+MaXCac7fF
IYtOaF8Qj9IOdKadRO/GUXtOohVcL7+eBtvl/jQnaO635t/TNLyPFosIBmLazXxm
iUIe3itl5+blVq6kU+vVBMTx573Z1QLw8/mDHgXeA1dRaNGTD/czvD2RnPnvsOA7
7SMpQR4sPxVc9lfPzN0GpKnSYw==
-----END PRIVATE KEY-----
[root@liumiaocn x509]#
[root@liumiaocn x509]# cat ca.crt
-----BEGIN CERTIFICATE-----
MIIDszCCApugAwIBAgIUNFq4+JNadWetjTuSrrmIcJz9l5YwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCQ04xETAPBgNVBAgMCExpYW9OaW5nMQ8wDQYDVQQHDAZE
YUxpYW4xDzANBgNVBAoMBmRldm9wczEQMA4GA1UECwwHdW5pY29ybjETMBEGA1UE
AwwKZGV2b3BzLmNvbTAeFw0xOTEyMTUwMjA0MTlaFw0yMDAxMTQwMjA0MTlaMGkx
CzAJBgNVBAYTAkNOMREwDwYDVQQIDAhMaWFvTmluZzEPMA0GA1UEBwwGRGFMaWFu
MQ8wDQYDVQQKDAZkZXZvcHMxEDAOBgNVBAsMB3VuaWNvcm4xEzARBgNVBAMMCmRl
dm9wcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVriM5yVAu
DDOxRO8i5h1ttuN405U+FvOqBPKvkSB9bOP5ewfUnQpJZqR45H1dXqQU3nSyZtbG
MyvIvbfu4ZItbcNuDUiPVeZIt938PfXauzTLJFneSkBMh3e08D4IIQC7xfRGY0eN
ljvNE9aaQ610W5sn8UsHNS+M8/TQFuP7wHr4OUtVjkdQTgNdFZxIvuNbmZ47Yxms
ULghOpuRvLkluh4fJ1go7ourZRzyP+vTRmfQCsuwcx5P0aOGt1Sf7P7OjVyKaif5
hJWlfJaCr7fcUCggici9eWZq+AjfIGCzN9vAJ+ypQPhNrdOA1mk6IbBN5CiUOnPH
Mj+9XOehzP6vAgMBAAGjUzBRMB0GA1UdDgQWBBS0Ltz0qsIrMLZRZA5C7fsFvB+g
5TAfBgNVHSMEGDAWgBS0Ltz0qsIrMLZRZA5C7fsFvB+g5TAPBgNVHRMBAf8EBTAD
AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBABzki38lSrAPSYgC3m4+BYEHZnpBqyZII
CZvmN/jttAjaJ5K8DWDH3MOQH4G79OiA7nlNdMFEtV+rp0UI1VLul2KpSqJ2q5Pf
lZPyLok4SRVV7tXIUo4Ilwqnp0RQEZXpEbOQix+xWvfypHvTzkJ5dCQ1lxXODtPV
/wAq1HN+D7G5p+U4HycHRCbT9u1eBxap0EkTI3j/++kHWxvYZanMnEn6jEgCdyv4
FA2Z8KT9Ek0zBTT6wUicdYuHN8dS1CuIHqYLTHq+z10rmvuBS/RqiGDW3VWJwmUp
Kt3PLg8vnrIifhMZiv+tTCL9j/JP5gTX7J1Xsn+uSSwJnaUA0UT2
-----END CERTIFICATE-----
[root@liumiaocn x509]#

使用x509子命令进行签名

步骤1: 生成证书签名请求CSR文件

签名的动作是需要求前提的,CSR文件就是这个前提,而实际向各个CA机构进行收费的证书申请也是需要提供CSR文件,只是可能会以另外一种格式出现,最终CA机构也是类似的需要生成类似的CSR文件。

执行示例文件:openssl req -new -out request-bj.csr -nodes -subj “/C=CN/ST=BeiJing/L=BeiJing/O=devops/OU=dev/CN=devops.com”

比如这里生成如下的CSR文件:

[root@liumiaocn x509]# ls
ca.crt  ca.key
[root@liumiaocn x509]# openssl req -new -out request-bj.csr -nodes -subj "/C=CN/ST=BeiJing/L=BeiJing/O=devops/OU=dev/CN=devops.com"
Generating a RSA private key
................................+++++
...................+++++
writing new private key to 'privkey.pem'
-----
[root@liumiaocn x509]# ls
ca.crt  ca.key  privkey.pem  request-bj.csr
[root@liumiaocn x509]# cat request-bj.csr
-----BEGIN CERTIFICATE REQUEST-----
MIICqjCCAZICAQAwZTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAO
BgNVBAcMB0JlaUppbmcxDzANBgNVBAoMBmRldm9wczEMMAoGA1UECwwDZGV2MRMw
EQYDVQQDDApkZXZvcHMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxyozo4nkONn1A7QG8okv7eKrSiWYQ2fgLSzfaYdUcUBV21GDQksOLHDoxle+
kPTV0yLZFJPnDvA41Pi+Iv7dWsKoLgHwWmbQ9tpwVPpVN7Az01vwQAAObiYpcvlr
50DNjWjtInN9gzkj3wfkHHShVErpwmFE7RQIwEjUHIJzTvXaJuhxyvC6usWQsQzO
aIwxUKYaeoxcoS2TN61Mzdx2Rtxij4sebjSjyECKVs5yCxiFh7RFvSo+pliHl0VP
6DrFA/AouC6WrR8coysln0qtBnpUdcBvV8QGuLAaO1kfpRQAFFhGMF4SQagUbW6m
TwQbyHYwGz+FAkk51amg6QiGdQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAGOA
wt8OvY4T+d2gEF9Gyrsl6/PxiWLDgTPiPHE8Qr4bmJLb88aG2rYdZtDVf/gEc4Ip
a3Qht6eF4YVzpbAZBgo3xSPCEqC6ut8sCPdjOMjna3n2sCuRo0Pkktx9oJXD5ofd
d6nh9k8JlBbGtUINBW2JEhlZdLOjcd9OEG9VHA84PSBJu7yvjAF1/LxI0skV79Xb
z5j3bVgJJYN7Lydu0LKl+ebkqohBkplx1eUV48sPPyu89lnnJoK7SzhIlCoCRVi5
6/c/enV6VdMaEoHIM0HzML6tnxbGBJlpUC4XgrVi6ft7gLUnSBc9i+cF8JPg9RYm
pWtjkbDPOc8lx7xTw0s=
-----END CERTIFICATE REQUEST-----
[root@liumiaocn x509]# cat privkey.pem
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHKjOjieQ42fUD
tAbyiS/t4qtKJZhDZ+AtLN9ph1RxQFXbUYNCSw4scOjGV76Q9NXTItkUk+cO8DjU
+L4i/t1awqguAfBaZtD22nBU+lU3sDPTW/BAAA5uJily+WvnQM2NaO0ic32DOSPf
B+QcdKFUSunCYUTtFAjASNQcgnNO9dom6HHK8Lq6xZCxDM5ojDFQphp6jFyhLZM3
rUzN3HZG3GKPix5uNKPIQIpWznILGIWHtEW9Kj6mWIeXRU/oOsUD8Ci4LpatHxyj
KyWfSq0GelR1wG9XxAa4sBo7WR+lFAAUWEYwXhJBqBRtbqZPBBvIdjAbP4UCSTnV
qaDpCIZ1AgMBAAECggEAT0S4sMpdD1OQdRzd9wIrFV82FZjI9WsOimxlrzaxoTGd
+mCDAYul5II741Vg/4iy4gnopIwJVqS9ueYWpw8RQuJe1ZDn/NMXMGjYdLn92OBE
gEcDZDWhiK2fqackDzJ3nWS5nRCiT+waHtahL8Irw8TdLQRRzpo+sWlLIt24zx/P
IeQHFfXiIV37E1f+HO2IGRvahII24sNxET90BcG5oXnba5FKUnefwMdA+ac3OMYa
arQZ/TzC3SNXuZYAOoXxw0gs08GSPwtNyEvYODImxUq1/yY9jcMCvUILosM6b5lO
uYM1XXMT2gM7uLmfk/6Np3pVVv9v62IU6owkOXSoMQKBgQDmBQZ8NpZk2/MzgQBQ
7e2eIT8X2Y9wD0ERVUffc59BJcS1ktpaXF56R3M5WLdJ30x/wdzo8ulkbSv0/7TQ
qOuG8CImo58CPhE25ThonHGTZdodBactcvKRmCYcIBw+Mzz+MPs30Rhe4tmut/Qk
oZPS1qgT4aOUfniM5OdAs7i5HwKBgQDdqQQkq1kyMUMRmnxcTBAtSQnG1fCGSzys
ZM4xlxxa0xegr3alVU01jSOCXrO1V5h8Kpddj+OnSY/s9FBK82clzdQNgUgIURXb
0E4L/1SxmYt+1FxXkGiOSei2fgWD8bR6G2eWlxetgp5KHHBB3iL4Xh4SAUQ/jWnl
TvezLvuJ6wKBgQDaRb6HtI02nHnGUA3qvj0UJ1xl13AD2JXYSuLvKhrfiWWHIBnQ
UYLd6ltu+b7EfP9s5Jwq+gd74xUpYlVFBGasH8dofy/uwtM3EoFa08n7I1W84JZp
zIBepNDVM6tZYunoFLbvmp3TvNTwtWMaN7G9CzFn3GCMEw92M+k2PtV15QKBgB2y
Iwf2nMCIsP+OvtJurkwi2Nh2mP6k3cAK0UT7haT1WtkAKNkFkI54FiXFIjZNQfSA
kD7MpCcpR8rrAEbKTStXY+1bQJc8pb0JLyuUTXhtpa6cLLLeeeN2K2Mnhv2iSBeD
zGD0ZQut0B8FqFRquiykD0tCOC57d5Bs/+pVhQV5AoGBAMP38T6xGhtSmvu5af9p
XSgGhR3EHIEZ1GoIuwY7FBoLdhGZPZAKx72Q4vq/PXCqRA8p/mUdORJPwfQ8iKKU
G66hLJQK/BEjvgo+ldRabwa8ZNB6VTT0XVspWCILlw16GQFGhB7B2Wekos9gI54c
8nXn93kEOuuI4LxBMZhq+2/N
-----END PRIVATE KEY-----
[root@liumiaocn x509]#

步骤2: 使用x509子命令和ca证书进行签名

使用CA和CAkey指定CA的私钥和证书文件,然后对CSR文件进行签名,得到签名之后的证书文件cert-test-bj.crt

[root@liumiaocn x509]# ls
ca.crt  ca.key  privkey.pem  request-bj.csr
[root@liumiaocn x509]# openssl x509 -req -in request-bj.csr -CA ca.crt -CAkey ca.key -out cert-test-bj.crt -CAcreateserial
Signature ok
subject=C = CN, ST = BeiJing, L = BeiJing, O = devops, OU = dev, CN = devops.com
Getting CA Private Key
[root@liumiaocn x509]#

结果确认如下所示

[root@liumiaocn x509]# ls
ca.crt  ca.key  ca.srl  cert-test-bj.crt  privkey.pem  request-bj.csr
[root@liumiaocn x509]#
[root@liumiaocn x509]# cat ca.srl
7501AB7B9A89D78837CB3C6B2F38B224D0E0BF13
[root@liumiaocn x509]# cat cert-test-bj.crt
-----BEGIN CERTIFICATE-----
MIIDVTCCAj0CFHUBq3uaideIN8s8ay84siTQ4L8TMA0GCSqGSIb3DQEBCwUAMGkx
CzAJBgNVBAYTAkNOMREwDwYDVQQIDAhMaWFvTmluZzEPMA0GA1UEBwwGRGFMaWFu
MQ8wDQYDVQQKDAZkZXZvcHMxEDAOBgNVBAsMB3VuaWNvcm4xEzARBgNVBAMMCmRl
dm9wcy5jb20wHhcNMTkxMjE1MDIxMzExWhcNMjAwMTE0MDIxMzExWjBlMQswCQYD
VQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UEBwwHQmVpSmluZzEPMA0G
A1UECgwGZGV2b3BzMQwwCgYDVQQLDANkZXYxEzARBgNVBAMMCmRldm9wcy5jb20w
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHKjOjieQ42fUDtAbyiS/t
4qtKJZhDZ+AtLN9ph1RxQFXbUYNCSw4scOjGV76Q9NXTItkUk+cO8DjU+L4i/t1a
wqguAfBaZtD22nBU+lU3sDPTW/BAAA5uJily+WvnQM2NaO0ic32DOSPfB+QcdKFU
SunCYUTtFAjASNQcgnNO9dom6HHK8Lq6xZCxDM5ojDFQphp6jFyhLZM3rUzN3HZG
3GKPix5uNKPIQIpWznILGIWHtEW9Kj6mWIeXRU/oOsUD8Ci4LpatHxyjKyWfSq0G
elR1wG9XxAa4sBo7WR+lFAAUWEYwXhJBqBRtbqZPBBvIdjAbP4UCSTnVqaDpCIZ1
AgMBAAEwDQYJKoZIhvcNAQELBQADggEBALSbIVoHTCkswi4scaqlje4ZDfceQv/a
J70pWUiGn3t6gvvSRpIz4C8Sc55B2/p4DAum4NGHZNPxV7cLwO9XmSHL5vSsRfuM
5+jDYWinlUV5MLK7LCwvBhqzMS7CRU1MrJlpOd5pu8O0beOY0lUx+EDJ3fwzy6IP
On9v/e/UUR7sI4YZZe8t1iZY+TSynPBswhikbM21JIzGRZw9xn3b8IXpL+CEgwm5
QjKsmidxqt0+GJ7Z0H/owmEFUOrA0x596/gjlMemJNf/+YlS3Ju0Wh6FTb5FsbGG
gNQ6E9Or863nFZ1KZIVOMF9WTQi8IuMDAO4vwU3WYJTUViQdQZUOkDs=
-----END CERTIFICATE-----
[root@liumiaocn x509]# openssl x509 -noout -issuer -subject -dates -in cert-test-bj.crt
issuer=C = CN, ST = LiaoNing, L = DaLian, O = devops, OU = unicorn, CN = devops.com
subject=C = CN, ST = BeiJing, L = BeiJing, O = devops, OU = dev, CN = devops.com
notBefore=Dec 15 02:13:11 2019 GMT
notAfter=Jan 14 02:13:11 2020 GMT
[root@liumiaocn x509]#

可以看到证书的发行者和拥有者不再跟之前自签名的示例那样都是相同的,这里的issuer是作为CA的证书ca.crt所提供,而subject显示的内容正是证书签名请求中所设定的内容。

SSL基础:20:使用x509子命令为其他证书签名相关推荐

  1. puppet子命令介绍

    puppet子命令介绍 # puppet -V                //查看puppet的版本 # puppet help              //查看puppet支持的一些子命令 # ...

  2. kubernetes基础介绍及kubectl常用命令

    kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...

  3. SSL 基础(zz)

    SSL 基础(zz) http://blogold.chinaunix.net/u/23381/showart_271713.html 某项目的业务系统要求在用户使用的过程使用数字证书.在刚接手这个任 ...

  4. t - sql的阶梯:超越基础水平2:写子查询

    t - sql的阶梯:超越基础水平2:写子查询 原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/104517/ 通过格雷戈里 ...

  5. linux单步跟踪命令,dbx调试跟踪的常用子命令

    dbx是UNIX下基于命令行界面的程序调试器. dbx是通过交互执行dbx子命令来达到调试的目的的.在调试程序前,必须先将-g选项包含在编译信息中,编译生成带调试信息的文件,即:cc -o filen ...

  6. 东师计算机基础20春在线作业2,计算机应用基础(高起专)计算机应用基础东师20春在线作业2...

    计算机应用基础(高起专)计算机应用基础20春在线作业28 L& X1 W+ k' }& E. t) w" y) e9 q 1.[单选题] 下列编码中,( )与汉字信息处理无关 ...

  7. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

  8. 东北师范计算机应用基础20秋在线作业1,21秋21春20秋-计算机应用基础20春在线作业1...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 东北师范大学-计算机应用基础20春在线作业1 20秋在线作业1 21春在线作业1 :1. 计算机的主机由( )组成 CPU.外存储器.外部设备|主机箱.键 ...

  9. 【Linux】基础特性与常见系统管理命令详解1

    目录 一.Linux基础特性 1.Tab 命令补全 2.快捷键的使用 3.命令行历史 4.命令别名 5.变量 变量种类 6.tee管道 7.分号: 单引号'' 双引号"" 反单引号 ...

最新文章

  1. springboot配置Druid数据源
  2. Android SDK下载失败-Android SDK Manager国内无法更新的解决方案
  3. 快速搭建移动应用直传服务
  4. .net byte转java byte_Java 最小值之谜
  5. 6.4 Ext.core.DomQuery 单实例查询选择器,通过正则表达式查找DOM或者HTM
  6. python 颜色大全
  7. PDF转图片文字丢失问题解决
  8. IP地址是什么?它怎样分类?它和子网掩码的关系是什么?以太网和令牌环网分别是什么?
  9. 常用名词理解(APK,SDK,JDK,API,DLL)
  10. 干货!基于深度空间一致性的鲁棒点云配准算法
  11. Windows Metro Style颜色色值表
  12. (附思维导图+笔记)-六面美团后,我发现大厂面试真的有“题库”!
  13. [业务题]货拉拉数据分析岗简答题, 评估优惠券促销活动的收益效果,评估哪种优惠券对企业更优
  14. 论文阅读:Meta-Learning in Neural Networks: A Survey
  15. 2019年研究生入学考试北京理工大学计算机专业基础813真题回忆
  16. 动规(11)-踩方格
  17. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(三)
  18. NumericUtil
  19. shell中的流编辑器awk
  20. libp2p kad 迭代查询

热门文章

  1. 无氧铜的网线跟纯铜的网线有什么区别?
  2. Android卡顿掉帧问题分析之工具篇
  3. matlab串口陀螺仪,matlab通过串口接收ARM7外设陀螺仪数据并绘图有困难急求解答...
  4. BDW01手把手系列01:BDW01开发板基于TencentOS Tiny之helloworld!
  5. 车规级芯片IC等级及其特点
  6. 用户、配额管理 、 云主机类型管理 、 镜像管理 、 网络管理 、 安全和实例管理 、 计算节点扩容案例
  7. c 多文件全局变量_必须知道的C语言知识细节:C程序编译后内存到底是如何布局...
  8. 纯干货!信贷行业电话销售员一定要掌握的电话沟通话术
  9. VCC,VDD,VEE,VSS,VPP 表示的意义
  10. 【国集作业】【AGC004E】Salvage Robots 【DP】