Answers
方法比较多,以最常用的nginx为例:
步骤一 : 配置
就是安装nginx,如下
sudo apt-get install nginx
步骤二: 为证书创建一个目录
SSL证书有两个主要部分: 证书本身 和 public key。 为了使相关文件便于访问,我们创建一个专门的目录,如下:
sudo mkdir /etc/nginx/ssl
然后进入该ssl目录,后续操作都在此目录中进行。
步骤三: 创建 私有 Server Key 和 证书签名请求
首先创建私有 Server Key,这个过程,程序会让你输入server key的密码, 请一定记住,具体如下:
sudo openssl genrsa -des3 -out server.key 1024
然后,我们创建证书签名请求:
sudo openssl req -new -key server.key -out server.csr
这个命令会弹出命令行,让你首先输入server.key的密码;成功输入后,你会被问几个问题(也就是常说的Distinguished Name 或者 DN),特别需要注意以下几点:
- 最重要的一个问题是 Common Name,在这里,你需要输入你的官方域名,如果没有,就输入你的服务器IP地址;
- 在最后,会提示A challenge password []: 和 An optional company name []:,直接回车跳过;
这里列举一下:
Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:Shanghai Locality Name (eg, city) []:Shanghai Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc Organizational Unit Name (eg, section) []:Dept of Merriment Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:[email protected]
步骤四: 移除密码
虽然passphrase能够提供更高的安全保障,但是,当尝试重启nginx时,你就会被要求输入密码,这是远程自动维护的噩梦。使用命令如下:
sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key
步骤五: 给SSL Certificate签名
你的证书已经创建完毕,现在是要签名的时候了。注意:你可以同时在这里指定这个证书的有效期,参数是 -days,以天为单位。这个期限超过后,此证书不再可用。因为是测试,我们可以给一个长点的天数,比如3650。
sudo openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
自此,证书的创建全部完成。
步骤六: 在服务器配置证书
创建一个新的virtual host文件:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example
然后打开,并编辑:
sudo nano /etc/nginx/sites-available/example
到文件最下端,找到 HTTPS server的设置部分,如下图:
# HTTPS server
server {
listen 443;
server_name example.com;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}
取消先前的注释,测地解放HTTPS。具体如下:
- 修改你自己的配置信息,和上面实例的一致
- 修改"server_name" 字段,这个字段应该是你的域名或者IP地址
- 给你的站点添加正确的目录 (以上配置包含了缺省的 nginx 页面).
同时确保以下两行已被注释掉
# Make site accessible from http://localhost/ # server_name localhost;
步骤七: 激活这个virtual host
最后一步就是使这个virtual host工作,如下
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
然后重启nginx
sudo service nginx restart
在浏览器访问你的https地址: https://youraddress
--------结束----------
gzllry
answered 10 years, 2 months ago