# 生成自簽發憑證 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)