`

自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

 
阅读更多
 Nginx支持多域名ssl证书
导读:

昨天凌晨将公司旗下的另外一个域名也升级成通过ssl证书登录的形式,那里料到过程竟然非常曲折,原因是nginx如果编译的时候使用openssl如果没有添加enable-tl***t参数的话,就只支持一个ssl证书,因此要让nginx支持多域名证书就必须要重新编译opensslnginx

 

详细过程:

升级更改完nginx配置文件以后,使用/usr/local/nginx/sbin/nginx  -t测试配置文件没有问题,就采用/usr/local/nginx/sbin/nginx  -s reload重新加载配置文件,输入新域名的https访问竟然出现错误证书的提示,左键点击证书错误,选择查看证书,发现用的是另外一个域名的证书。反复检查后错误依旧。心中转念一想:是不是nginx只支持一个证书?带着这个问题,在baidugoogle上搜索了一下,还真的是这个问题,要让nginx支持多证书,nginx必须支持TLS SNI,使用命令/usr/local/nginx/sbin/nginx  -V查看,服务器的查看结果如下:

nginx version: nginx/1.0.12

TLS SNI support disabled

configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module

很明显,不支持TLS SNI,需要重新编译opensslnginx

接下来我们详细叙述一下能让nginx支持多域名证书的过程,主要分为如下两个大步骤:编译安装openssl和编译安装nginxnginx平滑升级,不影响业务)。

一、编译安装openssl

wget http://www.openssl.org/source/openssl-0.9.8l.tar.gz

tar zxvf ./openssl-0.9.8l.tar.gz

cd ./openssl-0.9.8l

#编译的时候需要加上enable-tl***t参数

./config enable-tl***t

make

make install

二、编译安装nginxnginx平滑升级)

tar xzvf nginx-1.0.12.tar.gz

cd nginx-1.0.12

#备份原来的nginx配置

mv /usr/local/nginx /usr/local/nginx_old

#安装nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module  --with-http_stub_status_module --with-openssl=../openssl-0.9.8l/

make;make install

cd /usr/local/nginx

#备份新安装的配置目录

mv conf conf_bak

mv logs logs_bak

#拷贝原来的配置文件目录

cp -ar /usr/local/nginx_old/conf .

cp -ar /usr/local/nginx_old/logs .

#测试配置文件

/usr/local/nginx/sbin/nginx -t

#查找nginx主进程

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

#执行切换操作

kill -USR2 912

kill -WINCH 912

kill -QUIT 912

 

安装完成使用/usr/local/nginx/sbin/nginx  -V查看一下是否支持TLS SNI,检测如下:

nginx version: nginx/1.0.12

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-openssl=../openssl-0.9.8l/

Ok,显示已经支持了TLS SNI,在输入https访问,终于能显示正确的证书了! 注意目前如果使用xp上的IE去访问的话还是会提示证书有问题,因为xp上任何版本的IE都不支持TLS SNI

 
 这里说下Linux 系统怎么通过openssl命令生成 证书。

  首先执行如下命令生成一个key
  openssl genrsa -des3 -out ssl.key 1024
  然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
  由于生成时候必须输入密码。你可以输入后 再删掉。

  mv ssl.key xxx.key
  openssl rsa -in xxx.key -out ssl.key
   rm xxx.key
   然后根据这个key文件生成证书请求文件
   openssl req -new -key ssl.key -out ssl.csr
   以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)

    最后根据这2个文件生成crt证书文件
   openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
    这里365是证书有效期 推荐3650哈哈。这个大家随意。最后使用到的文件是key和crt文件。

    如果需要用pfx 可以用以下命令生成
    openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx

    在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。
   ssl on;
   ssl_certificate /home/ssl.crt;
   ssl_certificate_key /home/ssl.key;
   ssl_session_timeout 5m;
   ssl_protocols SSLv2 SSLv3 TLSv1;
   ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
   ssl_prefer_server_ciphers on;
    然后重启nginx就大功告成了
分享到:
评论

相关推荐

    Nginx配置SSL自签名证书的方法

    4. **自签发证书**:使用`openssl x509`命令,结合之前生成的CSR和私钥,自签发一个有效期为365天的证书,`openssl x509 -req -days 365 -in domain.csr -signkey domain.key -out domain.crt`。 接下来,我们需要...

    本地ssl证书生成工具

    - 自签发证书:使用`openssl x509`命令,使用之前生成的私钥对证书请求进行签名,生成自签名的SSL证书。 - 安装证书:将生成的证书安装到本地的信任存储或服务器上。 4. 测试环境的应用: 在本地开发和测试环境...

    免费SSL证书_CloudFlare SSL和Wosign沃通SSL申请开通和安装使用

    而选择FullSSL模式时,需要在服务器上部署SSL证书,可以是自签发的证书,并且在Nginx等web服务器软件中进行配置。 另一个免费SSL证书的提供者是Wosign沃通SSL。Wosign是一家中国的SSL证书颁发机构,其产品同样被...

    OpenSSL生成的ssl证书

    这会生成一个有效期为365天的自签名证书`certificate.crt`。 5. **合并证书和私钥**:为了简化Nginx配置,你可以将证书和私钥合并到一个文件中: ``` cat private.key certificate.crt > server.pem ``` **...

    nginx ssl证书的生成

    二、自签发SSL证书 对于测试环境或者个人站点,我们可以使用自签发的SSL证书。以下步骤展示了如何生成自签名证书: 1. 安装OpenSSL工具。OpenSSL是一个强大的安全套接字层密码库,包含了各种主要的密码算法、常用...

    SSL证书安装.zip

    - **购买SSL证书**:将CSR提交给证书颁发机构(CA)以获取签名的SSL证书。 - **下载并安装证书**:接收CA签发的证书文件,通常包括.crt和.key文件。 - **配置Apache**:编辑`httpd.conf`或特定的虚拟主机配置文件...

    nginx、tomcat安装免费ssl安全证书配置

    SSL证书由权威的证书颁发机构(CA)签发,它包含了网站的公钥、组织信息等,用于验证网站的身份并建立安全连接。阿里云作为知名的云服务提供商,也提供了免费的SSL证书服务。 安装步骤如下: 1. **申请阿里云免费...

    nginx配置下载SSL证书之后在服务器中配置之后就可以https访问

    一旦验证成功,服务商会签发SSL证书。 拿到已签发的SSL证书后,证书通常包括公钥证书(例如:example.crt)、私钥文件(例如:example.key)以及任何必要的中级证书文件(例如:intermediate.crt)。这些文件都需要...

    ssl证书安装制作工具window版

    自签发证书是未经过权威CA签发,而是由证书持有者自己签名的证书。在使用XCA创建自签发证书时,你需要先配置一个本地证书颁发机构(CA),然后创建并签署证书请求。这个过程包括生成公私钥对,其中私钥由证书持有者...

    nginx配置https的ssl 私钥证书

    自签发证书需要生成一对密钥,包括公钥(通常为.crt文件)和私钥(通常是.key文件)。 2. **Nginx配置文件** 在Nginx配置文件(通常位于`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`)中,你需要...

    免费SSL证书申请及配置

    当用户访问一个带有SSL证书的网站时,浏览器会检查证书的有效性,包括是否过期、是否由受信任的证书颁发机构签发以及是否与访问的域名匹配。如果这些检查全部通过,则浏览器会显示安全锁标志,表示连接是安全的。

    mkcert自制SSL本地证书部署到Nginx并https信任使用

    本文将详细介绍如何使用mkcert工具生成自签名SSL证书,并将其部署到Nginx服务器,使浏览器信任这个证书。 首先,`mkcert`是一个开源工具,它允许你在本地快速创建和安装信任的根证书权威机构(CA)以及与其关联的...

    阿里SSL证书两种配置方法

    SSL(Secure Sockets Layer)...同时,uniapp应用的证书制作主要涉及自签名证书的生成和项目配置,方便开发者进行本地开发和测试。在实际线上部署时,应使用正规的CA签发的SSL证书,以保证应用的安全性和用户信任度。

    加载 ssl证书的 nginx

    - 若选择自签发证书,可以使用OpenSSL签署自己的CSR: ``` openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt ``` 4. **配置Nginx**: - 编辑Nginx的配置文件,通常位于`/...

    2 制作第一张自己的SSL证书.zip

    总结来说,制作第一张自己的SSL证书是一个涉及生成密钥对、创建CSR、自签名证书、配置服务器以及安装验证的过程。虽然自签名证书在测试环境中可以使用,但在生产环境中,建议使用权威CA签发的证书以确保用户的信任和...

    create-ssl-certificate创建自签名SSL证书的命令行工具

    自签名SSL证书是一种不经过权威证书颁发机构(CA)验证,而是由自己签署的证书,通常用于测试环境或者内部网络。本文将详细介绍如何使用`create-ssl-certificate`这个基于Node.js的命令行工具来创建自签名SSL证书。 ...

    5分钟完成nginx ssl配置

    这将创建一个有效期为365天的自签名证书(server.crt)。 3. **提交CSR给CA(生产环境)**: 在生产环境中,你需要将CSR提交给CA,获取由他们签名的证书。完成此步骤后,CA会返回一个已签名的证书文件。 4. **...

    本地nginx部署ssl.rar

    在本地部署SSL,我们通常会使用OpenSSL工具生成自签名的免费证书,因为这在没有互联网连接的情况下也能实现。 首先,你需要了解SSL证书的基本构成,包括公钥和私钥。公钥用于加密数据,而私钥用于解密。在本地环境...

    界面化实现https证书生成和nginx配置

    在生成.crt证书的过程中,通常会涉及到生成私钥、请求证书签名(CSR)以及签发证书等步骤。 “动态修改nginx.conf文件,启用nginx中的https功能”这部分说明了该工具不仅生成证书,还能自动更新Nginx服务器的配置...

    ssl证书,可用于nginx

    SSL证书是网络安全领域中的一个重要概念,全称为Secure Sockets Layer(安全套接层)证书,现在通常指的是Transport Layer Security(传输层安全)证书。它的主要作用是为网络通信提供加密处理,确保数据在互联网上...

Global site tag (gtag.js) - Google Analytics