Điểm:1

"chứng chỉ tự ký trong chuỗi chứng chỉ", Máy chủ hay Máy khách?

lá cờ cn

Tôi đang tạo giao tiếp SSL giữa Máy chủ pg DB và máy khách nút. Sau khi làm theo một số tài liệu và triển khai với openssl, nút khiếu nại "chứng chỉ tự ký trong chuỗi chứng chỉ". Thêm chứng chỉ vào cửa hàng chứng chỉ của Windows không giúp được gì.

openssl cho Máy chủ DB dựa trên tài liệu pg:

openssl req -new -x509 -days 3650 -nodes -text -out serverdb.crt -keyout serverdb.key -subj "/CN=localhost"
Tạo khóa riêng RSA
viết khóa riêng mới vào 'serverdb.key'

openssl req -new -nodes -text -out rootdb.csr -keyout rootdb.key -subj "/CN=localhost"
Tạo khóa riêng RSA
viết khóa riêng mới vào 'rootdb.key'

openssl x509 -req -in rootdb.csr -text -days 3650 -extfile cnf\openssl.cnf -extensions v3_ca -signkey rootdb.key -out rootdb.crt
Chữ ký ok
chủ đề = CN = máy chủ cục bộ
Nhận khóa riêng

openssl req -new -nodes -text -out serverdb.csr -keyout serverdb.key -subj "/CN=localhot"
Tạo khóa riêng RSA
viết khóa riêng mới vào 'serverdb.key'

openssl x509 -req -in serverdb.csr -text -days 3650 -CA rootdb.crt -CAkey rootdb.key -CAcreateserial -out serverdb.crt
Chữ ký ok
chủ đề=CN = localhot
Nhận khóa riêng của CA

openssl cho máy khách nút:

openssl genrsa -des3 -out clientToDB.key 2048
Tạo khóa riêng RSA, mô đun dài 2048 bit (2 số nguyên tố)
// rem xóa cụm mật khẩu
openssl rsa -in clientToDB.key -out clientToDB.key
viết khóa RSA

//rem 2.8 Tạo chứng chỉ postgresql.crt.
openssl req -new -key clientToDB.key -out clientToDB.csr
...
Tên chung (ví dụ: FQDN của máy chủ hoặc tên CỦA BẠN) []:localhost
Vui lòng nhập các thuộc tính 'thêm' sau
được gửi cùng với yêu cầu chứng chỉ của bạn
Mật khẩu thử thách []:
Tên công ty tùy chọn []:

//rem 2.9 Ký tên bằng chứng chỉ gốc đáng tin cậy:
openssl x509 -req -in clientToDB.csr -CA rootdb.crt -CAkey rootdb.key -out clientToDB.crt -CAcreateserial
Chữ ký ok
Nhận khóa riêng của CA

postgresql.conf

ssl = bật 
ssl_cert_file = 'serverdb.crt'
ssl_key_file = 'serverdb.key'
ssl_ciphers = 'CAO:TRUNG BÌNH:+3DES:!aNULL' 
ssl_prefer_server_ciphers = bật
ssl_ca_file = 'rootdb.crt' 
ssl_crl_file = ''

cài đặt ssl của nút:

ssl: 
{
    rejectUnauthorized: true, // false hoạt động
        ca: fs.readFileSync("serverdb.crt").toString(),  
        khóa: fs.readFileSync("clientToDB.key").toString(), 
        chứng chỉ: fs.readFileSync("clientToDB.crt").toString() 
}

Môi trường là

Windows 10, pg và nút cả cục bộ, máy chủ cục bộ
openssl v1.1.1k
nút v14
không có tường lửa của công ty
Steffen Ullrich avatar
lá cờ se
`ca:fs.readFileSync("serverdb.crt").toString(),` - CA gốc của trang web máy chủ là rootdb.crt, không phải serverdb.crt. Ngoài ra, các lệnh của bạn khó hiểu vì lần đầu tiên bạn tạo serverdb.* trong lệnh đầu tiên và sau đó chỉ cần ghi đè lên nó trong các lệnh tiếp theo.
Jeb50 avatar
lá cờ cn
@SteffenUllrich Các lệnh dựa trên [tài liệu của pg](https://www.postgresql.org/docs/13/ssl-tcp.html#SSL-CERTIFICATE-CREATION). Sau khi thay thế `serverdb.crt` bằng `rootdb.crt`, nhận được `code:'DEPTH_ZERO_SELF_SIGNED_CERT' thông báo:'chứng nhận tự ký'`
Steffen Ullrich avatar
lá cờ se
*"Các lệnh dựa trên tài liệu của pg."* - bạn đang trộn các lệnh từ tài liệu không được phép trộn lẫn. Nó ghi lại hai cách: chứng chỉ tự ký và chứng chỉ do CA cấp và một chứng chỉ được cho là chỉ được sử dụng một chiều. Nó cũng giải thích khi nào nên sử dụng cái gì. Vui lòng đọc tài liệu chi tiết hơn.
Jeb50 avatar
lá cờ cn
@SteffenUllrich Đánh giá cao hướng dẫn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.