# 【Kibana】 使用 https

要在本機環境的 Kibana 自產憑證，並讓 Kibana 支援 **HTTPS**，而非預設的 **HTTP**，以下是詳細步驟：

---

## 🚀 **步驟 1：產生自簽名憑證（Self-Signed Certificate）**

### 🔧 **使用 OpenSSL 產生憑證：**

1. **開啟終端機**，執行以下指令來建立一個新的私鑰和自簽名憑證：

```bash
mkdir -p /etc/kibana/ssl
cd /etc/kibana/ssl
# 產生私鑰和自簽名憑證，設定有效期限為 365 天
openssl req -x509 -newkey rsa:4096 -keyout kibana-key.pem -out kibana-cert.pem -days 365 -nodes
# 修改擁有者，權限
chown kibana:kibana kibana-key.pem
chown kibana:kibana kibana-cert.pem
chmod 644 kibana-key.pem
chmod 600 kibana-key.pem
```

### 💡 **輸入相關資訊：**

在執行上述指令時，OpenSSL 會要求輸入一些資訊，像是：

- **Country Name (國家代碼)**：TW
- **State or Province Name (省/市)**：Taipei
- **Locality Name (城市)**：Taipei
- **Organization Name (公司名稱)**：momo.com
- **Common Name (CN)**：apielkmonitor.momoshop.com.tw

Country Name (2 letter code) \[AU\]:<span style="color: #e03e2d;">TW</span>  
State or Province Name (full name) \[Some-State\]:<span style="color: #e03e2d;">Taipei</span>  
Locality Name (eg, city) \[\]:<span style="color: #e03e2d;">Taipei</span>  
Organization Name (eg, company) \[Internet Widgits Pty Ltd\]:<span style="color: #e03e2d;">momo.com</span>  
Organizational Unit Name (eg, section) \[\]:  
Common Name (e.g. server FQDN or YOUR name) \[\]:<span style="color: #e03e2d;">apielkmonitor.momoshop.com.tw</span>  
Email Address \[\]:srou@fmt.com.tw

### 🎯 **產生的檔案：**

- kibana-cert.pe：私鑰
- kibana-cert.pe：自簽名憑證

---

## 🚀 **步驟 2：配置 Kibana 使用 HTTPS**

### 🔧 **編輯 Kibana 的設定檔 `kibana.yml`：**

打開 **`kibana.yml`** 檔案（通常位於 `/etc/kibana/kibana.yml` 或你的安裝目錄下），修改以下內容：

```yaml
# 啟用 SSL
server.ssl.enabled: true

# 設定 SSL 憑證和私鑰的路徑
server.ssl.certificate: /etc/kibana/ssl/kibana-crt.pem
server.ssl.key: /etc/kibana/ssl/kibana-key.pem
# 修改 Kibana 的監聽端口
server.port: 443


# 如果elasticsearch 使用ssl 連線(沒有則不用)
# 選擇驗證證書的方式
elasticsearch.ssl.verificationMode: full
# 這個證書在 Elasticsearch 的 HTTP 證書時已經生成。複製到 Kibana 安裝目錄下配置使用即可。
elasticsearch.ssl.certificateAuthorities: [ "/data/kibana-8.13.0/elasticsearch-ca.pem" ]

```

> ⚠️ **注意**：將 `/path/to/` 替換成你實際的憑證路徑。

---

## 🚀 **步驟 3：允許本機信任自簽名憑證**

### 🖥️ **Mac 或 Linux：**

將自簽名憑證 **kibana.crt** 匯入你的系統信任區：

```bash
sudo cp kibana.crt /usr/local/share/ca-certificates/kibana.crt
sudo update-ca-certificates

```

### 🖥️ **Windows：**

1. 打開 **證書管理**。
2. 選擇 **受信任的根憑證授權單位**。
3. 匯入 **kibana.crt** 檔案。

---

## 🚀 **步驟 4：重啟 Kibana**

```bash
sudo systemctl restart kibana

```

---

## 🎯 **步驟 5：透過 HTTPS 訪問 Kibana**

現在，你可以使用 **`https://localhost`**（或指定的 IP 地址）來訪問 Kibana。

---

### 錯誤處理:

#### **FATAL Error: listen EACCES: permission denied 0.0.0.0:443**

1. ```shell
    # 啟動服務錯誤
    sudo systemctl start kibana 
    # 可以使用以下語法查看詳細錯誤
    journalctl -u kibana -f
    
    #如果出現以下錯誤，代表不允許非root人員啟用1024 port 以下服務
    FATAL  Error: listen EACCES: permission denied 0.0.0.0:443
    
    #使用以下語法同意以下檔案綁定使用1024 port 以下服務
    setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana
    setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-plugin
    setcap cap_net_bind_service=+epi /usr/share/kibana/bin/kibana-keystore
    # node以實際位置為主
    setcap cap_net_bind_service=+epi /usr/share/kibana/node/glibc-217/bin/node
    ```

#### **Error: EACCES: permission denied, open '/run/kibana/kibana.pid'**

```
chown kibana:kibana /run/kibana/kibana.pid 
setcap cap_net_bind_service=+epi /run/kibana/kibana.pid
```