要使用 Spring Boot 應用程式連線到 AWS DocumentDB,並將 PEM 檔案轉換成 JKS 檔案,需要以下幾個步驟:
- 建立 Spring Boot 專案
- 配置 AWS DocumentDB
- 將 PEM 檔案轉換為 JKS 檔案
- 配置 Spring Boot 應用程式
- 實現連線並驗證
以下是詳細的步驟和示例程式碼。
1. 建立 Spring Boot 專案
使用 Spring Initializr(https://start.spring.io/)生成一個包含以下依賴項的專案:
- Spring Data MongoDB
- Spring Web
2. 配置 AWS DocumentDB
確保你的 AWS DocumentDB 叢集已經建立並可用,並獲取連線字串和所需的證書檔案。
3. 將 PEM 檔案轉換為 JKS 檔案
假設你有一個 PEM 檔案 rds-combined-ca-bundle.pem
。
3.1. 安裝 OpenSSL 和 Keytool
確保你的系統上安裝了 OpenSSL 和 JDK(其中包含 Keytool)。
3.2. 轉換 PEM 檔案為 PKCS12 檔案
openssl pkcs12 -export -in rds-combined-ca-bundle.pem -out rds-ca.p12 -name rds-ca
這會提示你設定匯出密碼,記住這個密碼用於下一步。
3.3. 轉換 PKCS12 檔案為 JKS 檔案
keytool -importkeystore -srckeystore rds-ca.p12 -srcstoretype PKCS12 -destkeystore rds-ca.jks -deststoretype JKS -srcalias rds-ca -destalias rds-ca
這會提示你輸入源密碼(在上一步中設定的密碼)和目標密碼。
4. 配置 Spring Boot 應用程式
將生成的 rds-ca.jks
檔案放置在你的 Spring Boot 專案的 src/main/resources
目錄中。然後編輯你的 application.properties
檔案:
spring.data.mongodb.uri=mongodb://<username>:<password>@<cluster-endpoint>:<port>/<database>?ssl=true&sslInvalidHostNameAllowed=true
spring.data.mongodb.ssl.enabled=true
spring.data.mongodb.ssl.key-store=classpath:rds-ca.jks
spring.data.mongodb.ssl.key-store-password=<jks-password>
將 <username>
、<password>
、<cluster-endpoint>
、<port>
、<database>
和 <jks-password>
替換為你的 AWS DocumentDB 的相應值和 JKS 密碼。
5. 實現連線並驗證
5.1 建立一個模型類
package com.example.demo;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "person")
public class Person {
@Id
private String id;
private String name;
private int age;
// Getters and Setters
}
5.2 建立一個儲存庫介面
package com.example.demo;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface PersonRepository extends MongoRepository<Person, String> {
}
5.3 建立一個控制器
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/persons")
public class PersonController {
@Autowired
private PersonRepository personRepository;
@GetMapping
public List<Person> getAllPersons() {
return personRepository.findAll();
}
@PostMapping
public Person createPerson(@RequestBody Person person) {
return personRepository.save(person);
}
}
啟動 Spring Boot 應用程式
確保 src/main/resources
目錄中有 rds-ca.jks
檔案,然後啟動你的 Spring Boot 應用程式:
mvn spring-boot:run
驗證連線
透過 POST 和 GET 請求來測試你的控制器。你可以使用 curl
或 Postman 等工具來傳送請求。
7.1 建立一個新的 Person
curl -X POST http://localhost:8080/persons -H "Content-Type: application/json" -d '{"name": "John Doe", "age": 30}'
7.2 獲取所有 Person
curl http://localhost:8080/persons
注意事項
- 證書有效性:確保 PEM 檔案中的證書是有效的,並且匯出時沒有錯誤。
- 密碼管理:確保在轉換過程中設定並使用強密碼。
- 路徑配置:確保
application.properties
中的路徑正確指向你的 JKS 檔案。 - 依賴庫:確保 Spring Data MongoDB 版本與 MongoDB 驅動程式相容。
透過以上步驟,你應該能夠使用 Spring Boot 應用程式安全地連線到 AWS 的 DocumentDB。