HTTPS简介
HTTPS可以理解为HTTP over SSL,即HTTP连接建立在SSL安全连接之上(Https+ssl)
SSL介绍:
SSL(Secure Socket Layer)安全套接字层是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输。SSL使用证书来创建安全连接,通常有两种验证模式:
仅客户端验证服务器的证书,客户端自己不提供证书;
客户端和服务器都互相验证对方的证书。
注意:编译安装的Nginx默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数,没有安装的话可以重新安装
OpenSSL自签证书
-
创建服务器私钥,需要输入一个口令
openssl genrsa -des3 -out server.key 4096
-
创建签名请求的证书(CSR)
中间会输入一些东西,默认就好了openssl req -new -key server.key -out server.csr
-
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令
openssl rsa -in server.key -out server_nopass.key
-
最后标记证书使用上述私钥和CSR
openssl x509 -req -days 365 -in server.csr -signkey server_nopass.key -out server.crt
执行后的结果:
其中server.crt,server_nopass.key是我们需要的
Nginx 配置 SSL
Nginx支持SSL其实只需要配置你生成的公钥跟私钥,只需要这两个文件就行了
注释掉的是原来生成的证书,本篇教程重新再生成一次,为了体验好一点把http的流量转到了https
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /home/ssl/server.crt; # 证书路径
ssl_certificate_key /home/ssl/server_nopass.key; # 私钥路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
}
启动nginx访问网站出现非私密链接,再高级中继续访问就行了,因为我们这个是自己生成的证书
至此我们的https已经搭建成功了!!!!!!!!!!