2012-02-21 23 views
29

Nginx'te SSL kurmaya çalışıyorum. Çalışmıyor ve nginx ile derlenmiş OpenSSL kitaplığından iletilen hata günlüğünde aşağıdaki hatayı alıyorum. Bu kütüphanenin ne olduğunu bilmiyorum, ama nginx'in 0.8.54 sürümü ve Ubuntu Linux'ta apt-get kullanarak kurdum.Nginx hata günlüğünde "SSL_CTX_use_PrivateKey_file" "parola hatasıyla ilgili sorunlar" nı gösterir?

2012/02/21 07:06:33 [emerg] 4071#0: 
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL: 
error:0906406D:PEM routines:PEM_def_callback:problems getting password error: 
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines: 
SSL_CTX_use_PrivateKey_file:PEM lib) 

Özel anahtar dosyasındaki dosya izinlerinin nginx'i okumasını durdurmadığından emin oldum. openssl rsa ile üretilen bir RSA özel anahtarıdır.

Buna neden olan herhangi bir fikir var mı?

cevap

17

Nginx ile kullanılan özel anahtar dosyasının şifresine sahip olması gerekir. Parolayı kaldırdım ve işe yaradı.

+0

Parola nasıl kaldırılır? – crossle

+0

Hatırlamıyorum - "openssl" ile yeni bir özel anahtar oluşturmuş olabilir ve parolayı bırakmış olabilirim. –

+0

Teşekkürler, passhprase'ı hatırlıyorum. – crossle

46

anahtar geçişdeyimi çıkarın: onlar sertifika ve anahtar birlikte ise

openssl rsa -in key.pem -out newkey.pem 

:

openssl rsa -in mycert.pem -out newcert.pem 
openssl x509 -in mycert.pem >>newcert.pem 

Kaynak: http://www.madboa.com/geek/openssl/#key-removepass

+2

Çok teşekkürler! R'lyeh'deydim. Aklımı kurtardın. – divs1210

+1

Rica ederim :-) Seni duyuyorum. Bu cevabı yazmamdan iki yıl geçti ve şimdi bunun hakkında bir şey hatırlamıyorum: D #insanityrealized –

+0

İlk komut için teşekkürler, şimdi her şey çalışıyor! – Aminos

1

soru eski biraz şimdi ve aslında nginx en az sürüm 1.2'den beri başlangıçta soran parolayı destekler. Ancak sorun hala geçerli çünkü bu özellik en son sürüm olan debian'dan nginx 1.6 ile sürüm 8'den kaldırıldı. Nedeni apache için iken nginx için sistemd komut dosyasında passphrase girişi uygulanmadı. Nginx'i manuel olarak başlatmak sadece işe yarar ve manuel müdahale gerektiğinden bu çok da sorun değil, burada sistemd kullanımı yok.

Referans: https://forum.nginx.org/read.php?2,262900,262931#msg-262931

4

Eğer bir parola ile .crt dosyası oluşturmak, böylece bu

server { 
    ssl_password_file /path-to-your-passphrase/ssl.pass; 
} 

gibi Nginx conf içinde .key için aynı parolayı ve .crt dosyası belirtmek gerekir Çünkü Nginx Doc

Bkz Yoksa, senin sertifika dosyası için parola gerekmiyorsa sadece aşağıdaki dosyayı oluşturmak için ssh-keygen aracını kullanın:

ssh-keygen -t rsa 
+0

Bu yalnızca sözdiziminde çalışmaktadır, nginx> = 1.7.3 –

+0

@JosephCoco Yep, haklısınız. Cevabımı düzenlemem gerek. – sudoz

+0

Mükemmel: thumbsup: – Will