Tôi làm theo hướng dẫn tại timescaleDB cho các API với Xác thực chứng chỉ -> 2. Tạo khóa và chứng chỉ cho các nút:
Đối với kết nối SSL, bạn cần bốn biến môi trường:
- Chứng chỉ gốc SSL
- Chứng chỉ SSL (cho nút)
- Khóa SSL (cho nút)
- Mật khẩu SSL (cho nút)
Đối với 1.), bạn lấy nó từ thang thời gian khi bắt đầu cơ sở dữ liệu dưới dạng văn bản hoặc dưới dạng tải xuống.
Đối với 2.), dường như bạn có thể tự tạo nó dưới dạng chứng chỉ tự ký với:
openssl req -out server.csr -new -newkey rsa:2048 -nodes \
-keyout server.key
Tôi đã điền "quốc gia" và bỏ qua phần còn lại của các mục chỉ với "." (điều này đã được đề xuất để bỏ qua). Tôi cũng đã điền "mật khẩu thử thách". Không chắc mức độ liên quan của việc điền thông tin này và liệu mật khẩu có phải là 4.) trong danh sách trên hay không.
Đối với 3.), trước tiên bạn cần thay đổi openssl.cnf không được đề cập trong hướng dẫn thang thời gian. Điều đó được thực hiện bằng cách tìm kiếm với whereis openssl.cnf
hoặc trong trường hợp của tôi, vị trí được hiển thị trong đầu ra của thiết bị đầu cuối khi các tham số vẫn sai ở đó, điều này cho thấy /usr/lib/ssl/openssl.cnf
như vị trí. Thay đổi cấu hình với sudo nano /usr/lib/ssl/openssl.cnf
để khóa riêng âserver.keyâ và chứng chỉ gốc âca.pemâ được tìm thấy. Sau đó, chạy lệnh của hướng dẫn:
openssl ca -extensions v3_intermediate_ca -days 3650 -notext \
-md sha256 -in server.csr -out server.crt
nhưng sau đó, bạn nhận được lỗi:
Sử dụng cấu hình từ /usr/lib/ssl/openssl.cnf
Chứng chỉ CA và khóa riêng CA không khớp
140718372717888:error:0B080074:x509 quy trình chứng chỉ:X509_check_private_key:giá trị khóa không khớp:../crypto/x509/x509_cmp.c:299:
Tập lệnh vẫn tạo server.key và server.csr, nhưng không thể tạo server.crt cần thiết.
Và chỉ Cách chuyển đổi .csr sang .cer (hoặc bất kỳ thứ gì có thể sử dụng được trên Windows) dường như có thể giúp tôi lấy server.crt với:
openssl x509 -req -in server.csr -signkey server.key -out server.crt
Nhập cái này vào cài đặt kết nối SSL tại Hasura:
Nhưng sau đó, khi cố gắng kết nối với cơ sở dữ liệu của tôi theo thang thời gian bằng Hasura, tôi gặp lỗi Thiếu Env Var
:
Thêm nguồn dữ liệu không thành công
Inconsistent object: Missing Env Var: -----BEGIN CERTIFICATE----- MIICoTCCAYkCFAHx6x6kVHJ023/ui0aLoWLqA8RyMA0GCSqGSIb3DQEBCwUAMA0x CzAJBgNVBAYTAkRFMB4XDTIxMDkyMTE4MDQzNVoXDTIxMTAyMTE4MDQzNVowDTEL MAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWGxsz
â¦
g98irlkrtDn17jIzmZMjlJEQ75P9L78lJMT2eYCFRqVoCm+7x5IUS18UlnGUtwR4 BuiZOg4= -----GIẤY CHỨNG NHẬN KẾT THÚC----
Tôi đoán rằng đây chỉ là vấn đề tiếp theo vì chứng chỉ CA và khóa riêng của CA rõ ràng là không khớp? Vì vậy, câu hỏi chủ yếu là về Chứng chỉ CA và khóa riêng CA không khớp
, thay thế.
Thời gian trả lời:
Mặc dù chúng tôi cung cấp gốc CA vì Chứng chỉ SSL cho mỗi dịch vụ
được ký nội bộ, vì vậy điều này sẽ cho phép bạn tạo niềm tin, nhưng chúng tôi
không cung cấp khóa riêng hoặc mật khẩu SSL cho họ.
Tài liệu bạn đã liên kết đến là để tạo chứng chỉ auth
giữa các nút trong môi trường nhiều nút tại chỗ. đám mây theo thang thời gian
không cho phép xác thực chứng chỉ, vì vậy chúng sẽ không liên quan
tại đây và bạn sẽ không thể kết hợp các chứng chỉ mà bạn tạo với
CA bạn đã tải xuống từ cổng thông tin điện toán đám mây.
Như một giải pháp thay thế, bạn cũng có thể bỏ mã hóa SSL vì nó chỉ là tùy chọn:
chỉ cần cung cấp toàn bộ chuỗi kết nối (như được sao chép từ
trường URI dịch vụ trong Cổng thông tin điện toán đám mây Timescale) là đủ để
liên kết.
Tôi đã kiểm tra điều này, đó là sự thật, bạn có thể chạy nó mà không cần SSL mặc dù SSL đã sẵn sàng để sử dụng. tôi đã sử dụng nguồn gốc chứng chỉ thành SSL-kết nối với psql hoặc pgAdmin với chương trình phụ trợ PostgreSQL timescaleDB và họ chỉ yêu cầu chứng chỉ gốc SSL --> 1.) ở trên chứ không yêu cầu chứng chỉ CA của nút và khóa riêng CA của nút --> 2.) - 4.) ở trên.
Kết nối chỉ với SSL nguồn gốc chứng chỉ cũng hoạt động với ứng dụng nút-postgres/Reac-postgres/Express/React, xem:
Tuy nhiên, cài đặt Giao diện lập trình ứng dụng Hasura yêu cầu bốn biến môi trường kết nối SSL của danh sách ở trên cùng, làm cách nào để lấy chúng để tôi có thể kết nối với Thang thời gian?