用openssl命令行生成证书 使用nginx搭建https服务器

Install SSL
Make sure that OpenSSL is installed on your server.

sudo apt-get install openssl
Create a new directory for the SSL certificate and generate the certificate with OpenSSL.

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Generate the certificate and key file:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/opencart.key -out /etc/nginx/ssl/opencart.crt
Change the permission of the private key to 600:

chmod 600 opencart.key
The SSL certificate installation is done.

listen 80;
listen [::]:80;
listen 443 default ssl;

ssl_certificate /etc/nginx/ssl/opencart.crt;
ssl_certificate_key /etc/nginx/ssl/opencart.key;

# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}


一、安装openssl apt-get install openssl
二、/etc/ssl/openssl.cnf拷贝到你的工作目录下去,就是你要生成证书的目录
cp /etc/ssl/openssl.cnf /home/projects/server
三、在工作目录下创建一个demoCA的文件夹,新建两个文件,index.txt serial,再在demoCA下创建一个newcerts的文件夹
mkdir demoCA
cd demoCA
touch ./{serial,index.txt}
四、在serial里面加两个字符01
vi serial
然后在里面输入01这两个字符
:wq 退出

到这里 ,准备工作已经就绪, 可以开始生成需要的密钥和证书了,按照下面一步步来吧, 以下摘自

1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.

3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf

4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

现在我们所需的全部文件便生成了.

nginx配置
server {
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
}
参考http://blog.csdn.net/yinlijun2004/article/details/5716753