---
# System prepended metadata

title: 生成自簽發憑證

---

# 生成自簽發憑證

Openssl是用來生成一個金鑰，其目的就是用來發布 public key, 在 public key 上加入各種屬性讓人知道這張 certificate 的作用是什麼, 再加上一段 CA 的簽名,增加這隻 public key 的可靠性

在Client的home目錄建立資料夾
`cd /home`
`mkdir odfe-ca`
`cd odfe-ca`


## 手動建立憑證


### 生成根密鑰及根憑證(root)
```
openssl genrsa -out odfe04-rootca-key.pem 2048
```

```
openssl req -new -x509 -sha256 -key odfe04-rootca-key.pem -out odfe04-rootca-cert.pem -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-rootca
```

![](https://i.imgur.com/avrhyAp.png)

### 生成管理員憑證(admin)
`openssl genrsa -out odfe04-admin-key-temp.pem 2048`

![](https://i.imgur.com/CkmWEup.png)

`openssl pkcs8 -inform PEM -outform PEM -in odfe04-admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out odfe04-admin-key.pem`

`openssl req -new -key odfe04-admin-key.pem -out odfe-admin.csr -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-admin`

`openssl x509 -req -in odfe04-admin.csr -CA odfe04-rootca-cert.pem -CAkey odfe04-rootca-key.pem -CAcreateserial -sha256 -out odfe04-admin.cert.pem`


**產生檔案**:

![](https://i.imgur.com/mtORs56.png)


生成各節點憑證(client,data1,data2,data3)
**client的憑證**
`openssl genrsa -out odfe04-esclient-key-temp.pem 2048`

![](https://i.imgur.com/CkmWEup.png)

`openssl pkcs8 -inform PEM -outform PEM -in odfe04-esclient-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out odfe04-esclient-key.pem`

`openssl req -new -key odfe04-esclient-key.pem -out odfe04-esclient.csr -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-client.dbdata.com`

`openssl x509 -req -in odfe-esclient.csr -CA odfe04-rootca-cert.pem -CAkey odfe04-rootca-key.pem -CAcreateserial -sha256 -out odfe04-esclient.cert.pem`

![](https://i.imgur.com/L0c5RdQ.png)


**esdata01的憑證**
`openssl genrsa -out odfe04-esdata1-key-temp.pem 2048`

`openssl pkcs8 -inform PEM -outform PEM -in odfe04-esdata1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out odfe04-esdata1-key.pem`

`openssl req -new -key odfe04-esdata1-key.pem -out odfe04-esdata1.csr -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-data1.dbdata.com`

`openssl x509 -req -in odfe04-esdata1.csr -CA odfe04-rootca-cert.pem -CAkey odfe04-rootca-key.pem -CAcreateserial -sha256 -out odfe04-esdata1.pem`

**esdata02的憑證**
`openssl genrsa -out odfe04-esdata2-key-temp.pem 2048`

`openssl pkcs8 -inform PEM -outform PEM -in odfe04-esdata2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out odfe04-esdata2-key.pem`

`openssl req -new -key odfe04-esdata2-key.pem -out odfe04-esdata2.csr -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-data2.dbdata.com`

`openssl x509 -req -in odfe04-esdata2.csr -CA odfe04-rootca-cert.pem -CAkey odfe04-rootca-key.pem -CAcreateserial -sha256 -out odfe04-esdata2.pem`

**esdata03的憑證**
`openssl genrsa -out odfe04-esdata3-key-temp.pem 2048`

```
openssl pkcs8 -inform PEM -outform PEM -in odfe04-esdata3-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out odfe04-esdata3-key.pem
```

`openssl req -new -key odfe04-esdata3-key.pem -out odfe04-esdata3.csr -subj /C=TW/ST=TAIWAN/L=TAIPEI/O=dbdata/OU=it/CN=odfe-data3.dbdata.com`

`openssl x509 -req -in odfe04-esdata3.csr -CA odfe04-rootca-cert.pem -CAkey odfe04-rootca-key.pem -CAcreateserial -sha256 -out odfe04-esdata3.pem`

### 檢視憑證內容是否成功建立
`openssl x509 -subject -nameopt RFC2253 -noout -in odfe04-esclient-cert.pem`

![](https://i.imgur.com/GcuI7uf.png)

應該有的檔案:

![](https://i.imgur.com/KvTW8lw.png)

### 佈署到各節點(esclient,esdata1,esdata2,esdata3)
#### esdata1
`scp odfe04-esdata1-key.pem odfe04-esdata1.pem odfe04-rootca-cert.pem root@<esdata1的IP>:/etc/elasticsearch/`
#### esdata2
`
scp odfe04-esdata2-key.pem odfe04-esdata2.pem odfe04-rootca-cert.pem root@<esdata2的IP>:/etc/elasticsearch/
`
#### esdata3

`scp odfe04-esdata3-key.pem odfe04-esdata3.pem odfe04-rootca-cert.pem root@<esdata3的IP>:/etc/elasticsearch/`

![](https://i.imgur.com/CcwrYjw.png)
#### client端本機複製
`cp odfe04-esclient-key.pem odfe04-esclient.cert.pem odfe04-rootca-cert.pem /etc/elasticsearch/`

至此將所有憑證生成完成並佈署至各節點上


---
## 參考資料:
關於憑證等背景知識相關參考連結:
[認識 PKI 架構下的數位憑證格式與憑證格式轉換的心得分享](https://blog.miniasp.com/post/2018/04/21/PKI-Digital-Certificate-Format-Convertion-Notes)
[OpenSSL官方文件](https://www.openssl.org/docs/man1.1.1/man1/)
[OpenSSL操作筆記](http://jianiau.blogspot.com/2015/07/openssl-generate-csr.html)
[OpenSSL Quick Reference Guide](https://www.digicert.com/kb/ssl-support/openssl-quick-reference-guide.htm)
[OpenSSL維基百科](https://zh.wikipedia.org/zh-tw/OpenSSL)