Cách thêm chuỗi sử dụng khóa mở rộng khi tạo chứng chỉ tự ký bằng openssl


10

Tôi đang sử dụng openssl trên Mac OS X 10.9 để tạo chứng chỉ tự ký cho Windows Server Remote Desktop Services.

Sử dụng lệnh dưới đây tôi có thể tạo chứng chỉ,

   openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

Tuy nhiên, tôi cần thêm chuỗi xác thực sử dụng khóa mở rộng (1.3.6.1.5.5.7.3.1) và tôi không thể tìm ra cách thực hiện trong lệnh trên.

Tôi đã thử sử dụng tùy chọn openssl -extfile với một tệp chứa tệp này,

[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

Tuy nhiên, tôi nhận được một lỗi rằng "không tìm thấy tùy chọn -extfile"


1
(CLI) Các tệp cấu hình openssl đã thuyết phục tôi rằng viết mã để tạo chứng chỉ tôi muốn dễ dàng hơn. Tôi đã sử dụng golang, nhưng tôi đoán bạn có thể sử dụng clib openssl.
Fistman nhịp điệu

Câu trả lời:


9

Trong khi openssl x509sử dụng -extfile, lệnh bạn đang sử dụng openssl req, cần -configchỉ định tệp cấu hình.

Vì vậy, bạn có thể sử dụng một lệnh như thế này:

openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
            -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

Các lời nhắc thông thường cho các bit tên phân biệt được xác định trong tệp cấu hình mặc định (có thể có /System/Library/OpenSSL/openssl.cnftrên OS X), nhưng tệp này không được xử lý khi bạn sử dụng -config, do đó tệp cấu hình của bạn cũng phải bao gồm một số bit DN. Do đó, các tham chiếu ở trên cert_configcó thể trông giống như thế này:

[ req ]
prompt             = no
distinguished_name = my dn

[ my dn ]
# The bare minimum is probably a commonName
            commonName = secure.example.com
           countryName = XX
          localityName = Fun Land
      organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
   stateOrProvinceName = YY
          emailAddress = ssl-admin@example.com
                  name = John Doe
               surname = Doe
             givenName = John
              initials = JXD
           dnQualifier = some

[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth

# see x509v3_config for other extensions

Như đã nêu trong nhận xét, có lẽ bạn có thể bỏ qua hầu hết các trường DN. Đối với việc sử dụng HTTPS, tôi nghĩ rằng tất cả những gì bạn cần là một CN phù hợp với tên máy chủ của bạn.


Các Tên phân biệt và mục Thuộc tính phần Format của req (1) cho thấy cách bạn có thể thay đổi cấu hình trên để nhắc cho các giá trị (và cung cấp các giá trị mặc định) nếu bạn muốn tạo ra nhiều tương tự như giấy chứng nhận / yêu cầu.

Nếu bạn cần các phần mở rộng chứng chỉ khác, hãy kiểm tra x509v3_config (5) để biết các bit khác bạn có thể chỉ định trong phần mở rộng.


1
Nếu bạn chỉ tạo CSR bằng dòng lệnh này thì hãy sử dụng -reqexts 'máy chủ của tôi xuất hiện' để yêu cầu CA sau đó tạo chứng chỉ với việc sử dụng khóa được tăng cường tự động của máy chủ.
memetech
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.