Não foi possível carregar as informações de configuração de /usr/local/ssl/openssl.cnf no Windows

184

Ao usar o OpenSSL no Windows:

openssl genrsa -out privatekey.pem 1024 -->

Criado com sucesso

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

Mostrando mensagem de erro como

incapaz de carregar informações de configuração em /usr/local/ssl/openssl.cnf

Karthik
fonte
4
Todas as respostas mostram que, de alguma forma, é necessário fazer referência ao arquivo de configuração openssl.cnf. MAS ninguém menciona qual arquivo de configuração, ?? quem o cria ?? qual é o seu conteúdo?
joedotnot

Respostas:

170

Depois de instalar o OpenSSL, fui solicitado a criar uma nova variável de ambiente:

  • Nome: OPENSSL_CONF
  • Valor: C:\Program Files\OpenSSL\openssl.cnf

No PowerShell:

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

Este valor difere das versões de instalação anteriores (como visto em uma edição anterior desta postagem). Além disso, não esqueça de adicionar a pasta binária openssl ${env:ProgramFiles}\OpenSSLao seu Path.

lame_coder
fonte
16
Na versão 1.0.1j, tive que usar C:\OpenSSL-Win32\bin\openssl.cfg.
precisa
7
Ou C: \ OpenSSL-Win64 \ bin \ openssl.cfg em sistemas de
64 bits
13
Ou C:\Program Files (x86)\Git\ssl\openssl.cfgpara aqueles que já estão com o git.
kspearrin
onde / como você está definindo esse valor?
24516
Isso o colocaria no ambiente de inicialização do usuário:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser
78

Você deve especificar o caminho absoluto para a configuração, algo como isto:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...
zombi_man
fonte
36
-config C: \ OpenSSL-Win64 \ bin \
openssl.cnf
4
Na versão 1.0.1e baixada de slproweb.com/products/Win32OpenSSL.html, existe apenas o arquivo openssl.cfgpresente no diretório bin após a instalação. Mas com este arquivo parece funcionar de qualquer maneira.
vanje
9
Se você estiver usando o OpenSSL fornecido com o Git, tente-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B
2
openssl: Erro: '-config' é um comando inválido. como vocês definem isso?
21715 benez
1
@kewlbfy ver a resposta @Kosar abaixo para onde usar a -configbandeira, isso funcionou para mim
danjah
36

No Windows 10, não há necessidade de reiniciar nem executar no modo de administrador; em vez disso, defina a configuração openssl da seguinte forma:

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

Claro, se você estiver usando GnuWin32

Pérola Negra
fonte
20

No Windows, [ Cenário semelhante ]

Eu estava enfrentando o mesmo problema, mas foi durante a solicitação da solicitação de assinatura de certificado.

Eu fiz o abaixo, funcionou para mim.

Uma vez instalado o OpenSSL, o Ran executou o prompt de administrador como administrador após a reinicialização do sistema.

1. [Caso de erro]

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

AVISO: não é possível abrir o arquivo de configuração: C: \ OpenSSL-Win64 \ bin \ openssl.cnf E Não é possível carregar as informações de configuração de C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [Trabalhou com aviso]

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

[Mensagem de aviso]: AVISO: não é possível abrir o arquivo de configuração: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Mas levou-me para o código secreto para server.key Ele trabalhou para mim.

Eu me referi, Este link para minha assistência.

Obrigado.

mavis
fonte
Obrigado, o link que você forneceu me ajudou muito: akadia.com/services/ssh_test_certificate.html
leole
15

A única coisa que funcionou para mim nessa situação foi o arquivo openssl.cnf criado automaticamente .

Aqui estão os princípios básicos necessários para este exercício (edite conforme necessário):

#
# 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

Espero que ajude.

simhumileco
fonte
1
Tendo tentado todas as outras soluções listadas aqui, esta funcionou para mim. Depois que a configuração for criada (no diretório openssl.exe), você poderá executaropenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo
12

Depois de instalar o OpenSSL, você precisa reiniciar o computador e usá-lo Run As Administrator. Então suas obras.

Karthik
fonte
11

Com as ferramentas do GnuWin32, encontrei o openssl.cnf em C: \ gnuwin32 \ share

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf
TL
fonte
9

Para mim, no Windows 8, simplesmente encontrei o arquivo openssl.cnf e o copiei na unidade C. então:

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

Funcionou perfeitamente.

Todos
fonte
6

No Windows 7, não precisei reiniciar, basta executar o prompt de comando no modo administrador.

Libertário de Calgary
fonte
4

No meu caso, preciso definir o caminho do arquivo openssl.cnf manualmente no comando usando a configopção Então o comando

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
Sunil Garg
fonte
3

Se você estiver usando o Win32 OpenSSL v1.1.0g , configure esta variável de ambiente:

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

Antes de executar este comando com "server.key" , crie com êxito "server.csr" :

openssl req -new -key server.key -out server.csr
5ervant
fonte
1

Na pergunta básica de por que o openssl não foi encontrado: Resposta curta: Alguns pacotes de instalação do openssl têm o padrão openssl.cnf pré-incluído. Outros pacotes não. Neste último caso, você incluirá um no link mostrado abaixo; Você pode inserir informações adicionais específicas do usuário - nome do DN, etc. - conforme necessário.

De https://www.openssl.org/docs/manmaster/man5/config.html, cito diretamente:

CONFIGURAÇÃO DA BIBLIOTECA OPENSSL

Os aplicativos podem configurar automaticamente certos aspectos do OpenSSL usando o arquivo de configuração principal do OpenSSL ou, opcionalmente, um arquivo de configuração alternativo. O utilitário openssl inclui esta funcionalidade: qualquer subcomando usa o arquivo de configuração principal do OpenSSL, a menos que uma opção seja usada no subcomando para usar um arquivo de configuração alternativo.

Para ativar a configuração da biblioteca, a seção padrão precisa conter uma linha apropriada que aponte para a seção de configuração principal. O nome padrão é openssl_conf, que é usado pelo utilitário openssl. Outros aplicativos podem usar um nome alternativo, como myapplication_conf. Todas as linhas de configuração da biblioteca aparecem na seção padrão no início do arquivo de configuração.

A seção de configuração deve consistir em um conjunto de pares de valores de nomes que contêm informações específicas de configuração do módulo. O nome representa o nome do módulo de configuração. O significado do valor é específico do módulo: ele pode, por exemplo, representar uma seção de configuração adicional contendo informações específicas do módulo de configuração. Por exemplo:"

Portanto, parece que você deve configurar o openssl.cnf de acordo com o seu Nome Distinto (DN), juntamente com outras entradas específicas para o seu uso.

Aqui está o arquivo de modelo a partir do qual você pode gerar o openssl.cnf com suas entradas específicas.

Um aplicativo realmente tem uma instalação de demonstração que inclui um arquivo .cnf de demonstração.

Além disso, se você precisar acessar programaticamente os arquivos .cnf, poderá incluir os cabeçalhos apropriados --openssl / conf.h-- e analisar seus arquivos .cnf usando

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

Aqui estão os documentos para "CONF_modules_load_file";

loveofthecode
fonte
0

Para mim, colocar variável antes de chamar fez o truque:

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

No Windows Powershell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Smith
fonte