Utwórz certyfikat SSL nieinteraktywnie [zamknięty]


28

Chcę cicho, nie interaktywnie, utworzyć certyfikat SSL. To znaczy, bez monitowania o jakiekolwiek dane.

Normalnym sposobem, w jaki tworzę certyfikat, jest:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

Próbowałem następujące:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

Ale nadal pojawia się monit o dane.


1
Czy możesz podać wyjaśnienie lub wynik tego, co się dzieje, zamiast pożądanego rezultatu?
— Patrick

Otrzymuję pomoc jako wynik - Coś jest nie tak z parametrami tutaj:openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
— TheNiceGuy

W razie problemów najlepiej podać dane wyjściowe błędów. Zgaduję, że twój problem jest z powodu -signkey. To nie jest poprawna openssl reqopcja w moim systemie. Komunikat o błędzie będzie miał to jako pierwszy wiersz:unknown option -signkey
— Patrick

Cóż, ten znak powinien powiedzieć SSL, aby używał dostarczonego klucza, jak wiem?
— TheNiceGuy,

Twój „normalny sposób utworzenia certyfikatu” nie wymaga żadnych danych. Czy nie chcesz, aby coś generowało? Następnie użyj 2> /dev/null.
— wingedsubmariner

Odpowiedzi:


51

Brakuje tylko włączenia podmiotu certyfikatu do -subjflagi. Wolę to od utworzenia pliku konfiguracyjnego, ponieważ łatwiej jest zintegrować go z przepływem pracy i nie wymaga późniejszego czyszczenia.

Klucz One Step i generowanie csr:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

Generowanie certyfikatu bez hasła w jednym kroku:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

Żadne z tych poleceń nie monituje o żadne dane.

Zobacz moją odpowiedź na to prawie identyczne pytanie na Super User.


Cóż, to miłe rozwiązanie. Sprawia, że ​​kody są znacznie mniejsze. Dzięki: D
— TheNiceGuy

1
Nie zmodyfikowałem jego oryginalnego pliku konfiguracyjnego, ponieważ myślałem, że może to oznaczać bardziej skomplikowany certyfikat. Niektóre konfiguracje, których nie można przedstawić za pomocą -subjparametru, szczególnie gdy wchodzisz w rozszerzenia v3 i parametry subjectAltName.
— robbat2

1
Możesz także użyć -batch(tryb nieinteraktywny)
— Eran H.

Zauważ, że pierwsze polecenie wydaje się wymagać istnienia klucza, zanim będzie można go wykonać w miejscu, w którym drugie polecenie tworzy klucz i certyfikat automatycznie, ponieważ -subjjest to podstawowy prawidłowy wbudowany CSR.
— dragon788

@ dragon788 Dziękujemy za zwrócenie na to uwagi. Naprawiłem to.
— bahamat

1

Polecenie, którego szukasz, to:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

Zmiany w twojej wersji:

  • -new jest wymagany do wygenerowania czegokolwiek
  • -key używane zamiast -signkey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.