Điểm:1

Làm cách nào để sao chép cấu hình của chứng chỉ tự ký với OpenSSL?

lá cờ in

Tôi có một bộ cân bằng tải yêu cầu chứng chỉ với một cấu hình cụ thể, tiếc là những người tạo chứng chỉ đầu tiên đã không ghi lại cấu hình này và tôi chỉ có một danh sách các lệnh chưa hoàn thành.

Tôi có hai tệp này: ví dụ_ca.crtví dụ.crt

Và sử dụng lệnh OpenSSL này:

openssl x509 -in file_name.crt -text -noout

Đây là những thuộc tính của nó (tôi sẽ lược bỏ những thông tin không liên quan):

ví dụ_ca.crt

Giấy chứng nhận:
    Dữ liệu:
        Phiên bản: 3 (0x2)
        Số seri:
            cb:0f:b8:78:38:9a:a9:da
        Thuật toán chữ ký: sha256WithRSAEencryption
        Tổ chức phát hành: CN = example.org
        hiệu lực
            Không Trước: Ngày 10 tháng 6 10:33:06 2020 GMT
            Không Sau : Ngày 17 tháng 5 10:33:06 2120 GMT
        Chủ đề: CN = example.org
        Thông tin khóa công khai chủ đề:
            Thuật toán khóa công khai: rsaEncryption
                Khóa công khai RSA: (2048 bit)
                Mô đun:
                    […]
                Số mũ: 65537 (0x10001)
        Tiện ích mở rộng X509v3:
            Mã định danh khóa chủ đề X509v3: 
                81:FE:D0:6D:DE:0A:CC:10:1D:B3:74:EA:4B:C8:F3:43:37:B4:D1:FD
            Mã định danh khóa chính quyền X509v3: 
                keyid:81:FE:D0:6D:DE:0A:CC:10:1D:B3:74:EA:4B:C8:F3:43:37:B4:D1:FD

            Các ràng buộc cơ bản của X509v3: 
                CA:TRUE
    Thuật toán chữ ký: sha256WithRSAEencryption
         […]

ví dụ.crt

Giấy chứng nhận:
    Dữ liệu:
        Phiên bản: 3 (0x2)
        Số seri:
            80:1d:bb:9e:9f:2c:4e:ce
        Thuật toán chữ ký: sha256WithRSAEencryption
        Tổ chức phát hành: CN = example.org
        hiệu lực
            Không Trước: Ngày 10 tháng 6 10:33:44 2020 GMT
            Không Sau : Ngày 17 tháng 5 10:33:44 2120 GMT
        Chủ đề: CN = example.org
        Thông tin khóa công khai chủ đề:
            Thuật toán khóa công khai: rsaEncryption
                Khóa công khai RSA: (2048 bit)
                Mô đun:
                    […]
                Số mũ: 65537 (0x10001)
        Tiện ích mở rộng X509v3:
            Sử dụng khóa mở rộng X509v3: 
                Xác thực ứng dụng khách web TLS, xác thực máy chủ web TLS
            Mã định danh khóa chính quyền X509v3: 
                keyid:81:FE:D0:6D:DE:0A:CC:10:1D:B3:74:EA:4B:C8:F3:43:37:B4:D1:FD

            Mã định danh khóa chủ đề X509v3: 
                B1:2C:74:04:EE:03:84:C9:F7:92:35:CE:6E:20:EF:C6:FE:B8:23:A7
    Thuật toán chữ ký: sha256WithRSAEencryption
         […]

Tôi quản lý để sao chép ví dụ_ca.crt với các lệnh và cấu hình này (ngày hết hạn không liên quan):

openssl genrsa -out example_ca.key 2048
openssl req -new -x509 -days 365 -key example_ca.key -out example_ca.crt -config root.cnf

root.cnf

# Cấu hình OpenSSL cho Root CA

[ yêu cầu ]

nhắc nhở = không
string_mask = mặc định

default_bits = 2048
tên_phân_biệt = req_tên_phân_biệt
x509_extensions = x509_ext

[ req_distinguished_name ]
commonName = example.org

[ x509_ext ]
ExtendedKeyUsage = clientAuth, serverAuth
chủ đềKeyIdentifier = hàm băm
authorityKeyIdentifier = keyid
basicConstraints=CA:true

Vấn đề của tôi xảy ra vào thời điểm này khi tôi không thể sao chép ví dụ.crt, tôi đã thử rất nhiều khả năng trong máy chủ.cnfopenssl.cnf tệp và tôi không tiến gần hơn đến kết quả mong muốn.

Đối với các bước cuối cùng tôi đã sử dụng các lệnh sau:

openssl genrsa -out example.key 2048
openssl req -new -out example.csr -key example.key -config server.cnf

echo ExtendedKeyUsage = clientAuth > openssl.cnf
openssl x509 -req -in example.csr -out example.crt -signkey example.key -CA example_ca.crt -CAkey example_ca.key -CAcreateserial -days 365 -extfile openssl.cnf

Tôi sẽ bỏ qua nội dung của máy chủ.cnf bởi vì đó là nơi tôi cần giúp đỡ. Nhưng về cơ bản tôi luôn nhớ "Phần mở rộng X509v3" phiên của ví dụ.crt

Vui lòng buộc sử dụng mật khẩu nếu cần hoặc sửa lỗi sao chép của tôi ví dụ_ca.crt Tôi chỉ đơn giản là giải thích các nguyên tắc cơ bản.

CẬP NHẬT:

máy chủ.cnf

# Cấu hình OpenSSL cho chứng chỉ thực thể cuối

[ yêu cầu ]
nhắc nhở = không
string_mask = mặc định

default_bits = 2048
tên_phân_biệt = req_tên_phân_biệt

x509_extensions = x509_ext

[ req_distinguished_name ]
commonName = example.org

[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement

chủ đềAltName = @alt_names

Có thể có nhiều tên thay thế
[alt_names]
DNS.1 = ví dụ.org
IP.1 = 127.0.0.1
# DNS.2 = altName.example.com
lá cờ br
Mọi người sẽ giúp bạn với `server.cnf` dễ dàng hơn nếu bạn đưa ra câu trả lời của mình trong câu hỏi của mình.
dave_thompson_085 avatar
lá cờ jp
Không sử dụng `-signkey` cùng với `-CA -CAkey` - cả hai không thể được thực hiện trên cùng một chứng chỉ, nhưng thay vì lỗi, điều này dường như khiến các tiện ích mở rộng bị trùng lặp (!!) và cũng có thể bị xáo trộn
dave_thompson_085 avatar
lá cờ jp
CŨNG CÓ: nếu bạn đang thực sự sử dụng các tên được hiển thị, thì bạn có `CN=example.org` cho **cả** CA và máy chủ; điều này sẽ không hoạt động khi bạn cố gắng sử dụng chứng chỉ cho bất kỳ thứ gì. Họ phải khác nhau. Đối với HTTPS (tôi giả sử bộ cân bằng tải là HTTPS), CN phải là tên miền khi không có SAN (đây sẽ là cách thực hành tốt hơn nhưng bạn không có); tên CA không cần phải là tên miền (và thậm chí không cần phải là CN; bạn có thể sử dụng O, OU, v.v.).
Willy avatar
lá cờ in
Cảm ơn bạn nhiều!, mình giải quyết được hết rồi, CN không dứt khoát đâu, chỉ là ví dụ thôi.
Điểm:0
lá cờ br

Tạo một địa phương.cnf tệp có nội dung tương tự (xóa nhận xét của tôi nếu bạn muốn):

[người phục vụ]

# Hai người này dự kiến...
chủ đềKeyIdentifier=băm
authorityKeyIdentifier=keyid:always,issuer

# Điều này là khôn ngoan đối với các thực thể cuối và NÊN rất quan trọng:
# keyUsage = quan trọng, chữ ký kỹ thuật số, thỏa thuận chính
# Chọn (một cách khôn ngoan) từ: chữ ký số, không từ chối, mã hóa khóa, mã hóa dữ liệu, thỏa thuận khóa, chỉ mã hóa và chỉ giải mã
# chứ không phải keyCertSign hoặc cRLSign vì chúng dành cho CA.

# Điều này chỉ dành cho chứng chỉ thực thể cuối.
ExtendedKeyUsage = clientAuth, serverAuth
# Chọn (một cách khôn ngoan) từ: https://www.openssl.org/docs/manmaster/man5/x509v3_config.html#Extends-Key-Usage

Sau đó, sử dụng các cờ sau trên mởsslx509 lệnh để áp dụng:

openssl x509 ... -extfile local.cnf -máy chủ tiện ích mở rộng
Willy avatar
lá cờ in
Tôi đã làm những gì bạn nói nhưng hai chi tiết, thứ tự của "subjectKeyIdentifier" và "authorityKeyIdentifier" là khác nhau trong mỗi tệp .crt, theo hướng dẫn của bạn, thứ tự giống nhau cho cả hai tệp. Mặt khác, các giá trị của "extendedKeyUsage" được lặp lại hai lần, tôi đã cập nhật câu hỏi để bạn có thể xem nội dung của server.cnf nhưng tôi thực sự không tin rằng mình đã làm đúng.
dave_thompson_085 avatar
lá cờ jp
Phần đầu tiên của bạn là sai; nếu `x509 -req` có `-extfile` nhưng không có `-extensions` thì nó sẽ sử dụng giá trị của `extensions` từ phần mặc định (mà OP không có) hoặc chính phần mặc định đó (mà OP đã có) . Nhưng bạn đã đúng về các giá trị nên _in_ phần được sử dụng, bất kể nó là gì. @Willy: để ngăn các tiện ích mở rộng trùng lặp, hãy xóa `-signkey` như tôi đã nhận xét về Q.
lá cờ br
@dave_thompson_085 - cảm ơn. Tôi đã sửa nó. Mỗi ngày là một ngày học :-)

Đă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.