У меня есть сайт, который отлично работал с apache на каком-то старом сервере Ubuntu, а также имел для него https. Но теперь по некоторым причинам мне нужно перейти на другой (новый сервер ubuntu с высокой конфигурацией) сервер и попытаться обслуживать мой сайт с помощью Nginx, поэтому я установил nginx (nginx/1.4.6 (Ubuntu)
). Ниже мой nginx.conf
настройки файла
server {
listen 8005;
location / {
proxy_pass http://127.0.0.1:8001;
}
location /static/ {
alias /root/apps/project/static/;
}
location /media/ {
alias /root/apps/media/;
}
}
# Https Server
server {
listen 443;
location / {
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Protocol $scheme;
# proxy_set_header X-Url-Scheme $scheme;
# proxy_redirect off;
proxy_pass http://127.0.0.1:8001;
}
server_tokens off;
ssl on;
ssl_certificate /etc/ssl/certificates/project.com.crt;
ssl_certificate_key /etc/ssl/certificates/www.project.com.key;
ssl_session_timeout 20m;
ssl_session_cache shared:SSL:10m; # ~ 40,000 sessions
ssl_protocols SSLv3 TLSv1; # SSLv2
ssl_ciphers ALL:!aNull:!eNull:!SSLv2:!kEDH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP:@STRENGTH;
ssl_prefer_server_ciphers on;
}
Поскольку у меня уже был сертификат https (project.com.crt
) и ключ (www.project.com.key
), запущенного на другом сервере, я только что скопировал их на новый сервер (который на данный момент не содержит никакого домена и имеет только IP) и поместил в путь /etc/ssl/certificates/
и пытаюсь использовать их напрямую. Теперь я перезапустил Nginx и попытался получить доступ к своему IP. 23.xxx.xxx.xx:8005
с участием https:// 23.xxx.xxx.xx:8005
и я получаю указанную ниже ошибку в firefox
Secure Connection Failed
An error occurred during a connection to 23.xxx.xxx.xx:8005. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem. Alternatively, use the command found in the help menu to report this broken site.
Но когда я получаю доступ к IP без https
, я могу обслуживать свой сайт.
Так что же не так с моими настройками Https в приведенном выше файле конфигурации nginx? Не можем ли мы обслужить файлы сертификатов, просто скопировав их и вставив в какую-то папку? нам нужно создать дополнительный сертификат для моего нового сервера?
После внесения некоторых изменений в соответствии с приведенным ниже ответом теперь я получаю следующую ошибку
This is probably not the site you are looking for!
You attempted to reach 23.xxx.xxx.xx, but instead you actually reached a server identifying itself as www.xxxxxxxx.com. This may be caused by a misconfiguration on the server or by something more serious. An attacker on your network could be trying to get you to visit a fake (and potentially harmful) version of 23.xxx.xxx.xx.
Итак, на самом деле сертификат работал нормально на старом сервере и ему доверяли, но тот же сертификат жаловался, что ему не доверяют, поэтому эта ошибка не появится после того, как мы внесем изменения в DNS? я имею в виду, как только мы перенаправим мой сайт www.xxxxxxxx.com на новый IP 23.xxx.xxx.xx?
Вы настроили SSL для порта 443.
Если вы хотите, чтобы на порту 8005 был SSL, а на порту 443 ничего не было, используйте эту конфигурацию:
server {
listen 8005 ssl;
ssl_certificate /etc/ssl/certificates/project.com.crt;
ssl_certificate_key /etc/ssl/certificates/www.project.com.key;
ssl_session_timeout 20m;
ssl_session_cache shared:SSL:10m; # ~ 40,000 sessions
ssl_protocols SSLv3 TLSv1; # SSLv2
ssl_ciphers ALL:!aNull:!eNull:!SSLv2:!kEDH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP:@STRENGTH;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8001;
}
location /static/ {
alias /root/apps/project/static/;
}
location /media/ {
alias /root/apps/media/;
}
}
Затем пара моментов по комплектации ..
/root
для хранения любых файлов в сети. Это может вызвать проблемы в долгосрочной перспективе. Используйте что-нибудь под /var/www
.ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
рекомендовано Qualys.