我在VirtualBox客户机设备上安装了Windows10主机,并安装了GUIless ubuntu。我为Ubuntu(198.162.0.110)提供了专用的家庭网络静态IP地址。在此VBox-ubuntu上,我设置了nginx代理服务器,该服务器启用与开发HTTP Rails服务器的HTTPS连接。我使用ssh(putty,vscode-ssh,winscp和其他工具)连接将主机(win10)连接到来宾(Ubuntu),以便利用Windows上的开发环境。
我管理了可通过HTTPS进行连接的Nginx代理服务器的设置(我需要使用它来开发和测试安全cookie等。
现在,我可以像这样连接到服务器应用程序:https://192.168.0.110“成功”,但是出现以下问题:
我进入Proceed to 192.168.0.110 (unsafe)
,该应用程序出现并开始工作。但是现在我必须实现社交网络登录(Facebook),并且此Not secure
似乎是个问题。Facebook要求安全连接:
这是我的Nginx配置:
server {
listen 443 ssl;
listen 80;
server_name 192.168.0.110 localhost 127.0.0.1;
root /home/csrhub/git/csrhub-frontend/public/rails;
index index.html;
location / {
proxy_pass http://127.0.0.1:8016/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Port 443;
proxy_ssl_trusted_certificate /etc/nginx/ssl/certs/homerouter/homerouter.crt;
proxy_read_timeout 80s;
}
location /api/v2/ {
proxy_pass http://127.0.0.1:8014;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_redirect http:// https://;
}
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/nginx/ssl/certs/homerouter/homerouter.crt;
ssl_certificate_key /etc/nginx/ssl/certs/homerouter/homerouter.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
这是我生成证书的方式:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout homerouter.key -out homerouter.crt -config homerouter.conf
这是生成证书时使用的配置文件homerouter.conf。
[req]
default_bits = 2048
default_keyfile = localhost.key
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = New York
localityName = Locality Name (eg, city)
localityName_default = Rochester
organizationName = Organization Name (eg, company)
organizationName_default = localhost
organizationalUnitName = organizationalunit
organizationalUnitName_default = Development
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = localhost
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1
DNS.3 = 192.168.0.110
DNS.4 = 192.168.43.60
显然,我缺少某些东西,或者至少我做的方法不正确。请帮助我确保此连接的安全。最后,这是我的家庭本地网络-一切都在这里受信任。
哦,我发现了问题:
[首先,我必须将commonName添加为主机名(我将homerouter
选择为nginx所在的本地网络地址192.168.0.1
的公共名称)在我的Windows(主机)上的方法如下:https://www.liquidweb.com/kb/edit-host-file-windows-10/。
然后,在我的[[homerouter.conf中,我更改了一些字段,如下所示:
........
default_keyfile = homerouter.key
........
commonName = homerouter
commonName_default = homerouter
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1
DNS.3 = 192.168.0.110
DNS.4 = 192.168.43.60
DNS.5 = homerouter
然后我运行了以下命令:
certutil -d sql:$HOME/ssl/nssdb -A -t "P,," -n "homerouter" -i homerouter.crt
我没有相应的数据库,所以我不得不创建一个新的数据库。怎么样?参见here。当然,还向Chorme添加了新生成的证书。
所有人都起到了魅力!