Không thể tải thông tin cấu hình từ /usr/local/ssl/openssl.cnf trên Windows


183

Trong khi sử dụng OpenSSL trên Windows:

openssl genrsa -out privatekey.pem 1024 -->

Tạo thành công

openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 
---->

Hiển thị thông báo lỗi dưới dạng

không thể tải thông tin cấu hình từ /usr/local/ssl/openssl.cnf


3
Tất cả các câu trả lời cho thấy bằng cách nào đó người ta phải tham chiếu tệp cấu hình openssl.cnf .. NHƯNG không ai đề cập đến tệp cấu hình nào, ?? ai tạo ra nó, ?? nội dung của nó là gì?
joedotnot

Câu trả lời:


170

Sau khi cài đặt OpenSSL, tôi được yêu cầu tạo một biến môi trường mới:

  • Tên: OPENSSL_CONF
  • Giá trị: C:\Program Files\OpenSSL\openssl.cnf

Trong quyền hạn:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"

Giá trị này khác với các phiên bản cài đặt trước đó (như đã thấy trong bản chỉnh sửa trước của bài đăng này). Ngoài ra, đừng quên thêm thư mục nhị phân openssl ${env:ProgramFiles}\OpenSSLvào Đường dẫn của bạn.


16
Trên phiên bản 1.0.1j tôi phải sử dụng C:\OpenSSL-Win32\bin\openssl.cfgthay thế.
Kevin Panko

7
Hoặc C: \ OpenSSL-Win64 \ bin \ openssl.cfg trong các hệ thống
64 bit

13
Hoặc C:\Program Files (x86)\Git\ssl\openssl.cfgcho những người đã có git.
kspearrin

Bạn đang đặt giá trị này ở đâu / như thế nào?
matthew_360

Điều này sẽ đưa nó vào môi trường khởi động của người dùng của bạn:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser

78

Bạn nên chỉ định đường dẫn tuyệt đối đến cấu hình, đại loại như thế này:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...

36
-config C: \ OpenSSL-Win64 \ bin \ openssl.cnf
TimK

4
Trong phiên bản 1.0.1e được tải xuống từ slproweb.com/products/Win32OpenSSL.html chỉ có tệp openssl.cfgcó trong thư mục bin sau khi cài đặt. Nhưng với tập tin này dường như nó vẫn hoạt động.
vanje

9
Nếu bạn đang sử dụng OpenSSL được cung cấp với Git thì bạn có thể thử-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl: Error: '-config' là một lệnh không hợp lệ. Làm thế nào để các bạn thiết lập nó?
benez

1
@kewlbfy xem @Kosar trả lời bên dưới để biết nơi sử dụng -configcờ, điều này hiệu quả với tôi
danjah

35

Trong Windows 10, không cần khởi động lại cũng không chạy trong chế độ Quản trị viên mà thay vào đó, hãy đặt cấu hình openssl như vậy:

set OPENSSL_CONF=C:\Program Files (x86)\GnuWin32\share\openssl.cnf

Tất nhiên, nếu bạn đang sử dụng GnuWin32


20

Trong cửa sổ, [ Kịch bản tương tự ]

Tôi đã phải đối mặt với cùng một vấn đề Nhưng đó là trong khi yêu cầu Yêu cầu ký chứng chỉ.

Tôi đã làm như dưới đây, Nó làm việc cho tôi.

Khi OpenSSL được cài đặt, lệnh Ran sẽ nhắc nhở với tư cách quản trị viên sau khi khởi động lại hệ thống. [Để tốt nhất tôi đã làm cả .. chạy với tư cách quản trị viên và khởi động lại hệ thống]

đã làm, 1. [Trường hợp lỗi]

C:\OpenSSL-Win64\bin>openssl req -new -key server.key -out server.csr

CẢNH BÁO: không thể mở tệp cấu hình: C: \ OpenSSL-Win64 \ bin \ openssl.cnf VÀ Không thể tải thông tin cấu hình từ C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Làm việc với Cảnh báo]

C:\OpenSSL-Win64\bin> openssl req -new -key server.key -out server.csr -config C:\OpenSSL-Win64\bin\openssl.cfg

[Thông báo cảnh báo]: CẢNH BÁO: không thể mở tệp cấu hình: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Nhưng đã nhắc tôi về cụm từ Pass cho server.key Nó hoạt động với tôi.

Tôi đã giới thiệu, Liên kết này để được hỗ trợ của tôi.

Cảm ơn bạn.


Cảm ơn, liên kết bạn cung cấp đã giúp tôi rất nhiều: akadia.com/service/ssh_test_cert ve.html
leole

15

Điều duy nhất làm việc cho tôi trong tình huống này là tệp openssl.cnf tự tạo .

Dưới đây là những điều cơ bản cần thiết cho bài tập này (chỉnh sửa khi cần):

#
# OpenSSL configuration file.
#

# Establish working directory.

dir                         = .

[ ca ]
default_ca                  = CA_default

[ CA_default ]
serial                      = $dir/serial
database                    = $dir/certindex.txt
new_certs_dir               = $dir/certs
certificate                 = $dir/cacert.pem
private_key                 = $dir/private/cakey.pem
default_days                = 365
default_md                  = md5
preserve                    = no
email_in_dn                 = no
nameopt                     = default_ca
certopt                     = default_ca
policy                      = policy_match

[ policy_match ]
countryName                 = match
stateOrProvinceName         = match
organizationName            = match
organizationalUnitName      = optional
commonName                  = supplied
emailAddress                = optional

[ req ]
default_bits                = 1024          # Size of keys
default_keyfile             = key.pem       # name of generated keys
default_md                  = md5               # message digest algorithm
string_mask                 = nombstr       # permitted characters
distinguished_name          = req_distinguished_name
req_extensions              = v3_req

[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName      = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName                 = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName                  = Common Name (hostname, IP, or your name)
commonName_max              = 64

# Default values for the above, for consistency and less typing.
# Variable name             Value
#------------------------     ------------------------------
0.organizationName_default  = My Company
localityName_default        = My Town
stateOrProvinceName_default = State or Providence
countryName_default         = US

[ v3_ca ]
basicConstraints            = CA:TRUE
subjectKeyIdentifier        = hash
authorityKeyIdentifier      = keyid:always,issuer:always

[ v3_req ]
basicConstraints            = CA:FALSE
subjectKeyIdentifier        = hash

Tôi hy vọng điều đó sẽ giúp.


1
Đã thử mọi giải pháp khác được liệt kê ở đây, giải pháp này hiệu quả với tôi. Khi cấu hình được tạo (trong thư mục openssl.exe), bạn có thể chạyopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

Sau khi cài đặt OpenSSL, bạn cần khởi động lại máy tính và sử dụng Run As Administrator. Sau đó, công việc của nó.


11

Với các công cụ GnuWin32, tôi đã tìm thấy openssl.cnf trong C: \ gnuwin32 \ share

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf

9

Đối với tôi trên Windows 8, tôi chỉ đơn giản tìm thấy tệp openssl.cnf và sao chép nó trên ổ C. sau đó:

openssl req -new -key server.key -out server.csr -config C:\openssl.cnf

Làm việc hoàn hảo.


6

Trong Windows 7 tôi không phải khởi động lại, chỉ cần chạy dấu nhắc lệnh trong chế độ quản trị viên.


4

Trong trường hợp của tôi, tôi cần thiết lập đường dẫn của tệp openssl.cnf theo cách thủ công trên lệnh bằng cách sử dụng configtùy chọn. Vì vậy, lệnh

openssl req -x509 -config "C:\Users\sk\Downloads\openssl-0.9.8k_X64\openssl.cnf" -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900

3

Nếu bạn đang sử dụng Win32 OpenSSL v1.1.0g , hãy thiết lập biến môi trường này:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\cnf\openssl.cnf

Trước khi chạy lệnh này với "server.key" , tạo thành công "server.csr" :

openssl req -new -key server.key -out server.csr

1

Về câu hỏi cơ bản về lý do tại sao openssl không được tìm thấy: Câu trả lời ngắn: Một số gói cài đặt cho openssl có bao gồm openssl.cnf mặc định. Các gói khác thì không. Trong trường hợp sau, bạn sẽ bao gồm một từ liên kết hiển thị bên dưới; Bạn có thể nhập thêm thông tin cụ thể của người dùng - tênDN, vv-- nếu cần.

Từ https://www.openssl.org/docs/manmaster/man5/config.html,I trích dẫn trực tiếp:

"CẤU TẠO THƯ VIỆN OPENSSL

Các ứng dụng có thể tự động định cấu hình các khía cạnh nhất định của OpenSSL bằng tệp cấu hình chính OpenSSL hoặc tùy chọn tệp cấu hình thay thế. Tiện ích openssl bao gồm chức năng này: bất kỳ lệnh phụ nào cũng sử dụng tệp cấu hình OpenSSL chính trừ khi sử dụng tùy chọn trong lệnh phụ để sử dụng tệp cấu hình thay thế.

Để kích hoạt cấu hình thư viện, phần mặc định cần chứa một dòng thích hợp trỏ đến phần cấu hình chính. Tên mặc định là openssl_conf được sử dụng bởi tiện ích openssl. Các ứng dụng khác có thể sử dụng một tên thay thế, chẳng hạn như myapplication_conf. Tất cả các dòng cấu hình thư viện xuất hiện trong phần mặc định khi bắt đầu tập tin cấu hình.

Phần cấu hình phải bao gồm một tập hợp các cặp giá trị tên chứa thông tin cấu hình mô-đun cụ thể. Tên đại diện cho tên của mô-đun cấu hình. Ý nghĩa của giá trị là cụ thể mô-đun: ví dụ, nó có thể đại diện cho phần cấu hình tiếp theo chứa thông tin cụ thể của mô-đun cấu hình. Ví dụ:"

Vì vậy, nó xuất hiện một người phải tự cấu hình openssl.cnf theo Tên phân biệt (DN) của bạn, cùng với các mục khác dành riêng cho việc sử dụng của bạn.

Đây là tệp mẫu mà từ đó bạn có thể tạo openssl.cnf với các mục cụ thể của mình.

Một ứng dụng thực sự có cài đặt bản demo bao gồm tệp .cnf demo.

Ngoài ra, nếu bạn cần truy cập theo chương trình các tệp .cnf, bạn có thể bao gồm các tiêu đề thích hợp --openssl / conf.h-- và phân tích các tệp .cnf của bạn bằng cách sử dụng

CONF_modules_load_file(const char *filename, const char *appname,
                            unsigned long flags);

Đây là tài liệu cho "CONF_modules_load_file";


0

Đối với tôi đặt biến trước khi gọi đã thực hiện thủ thuật:

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365

0

Trên Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
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.