Web Server支持HTTPS访问需要两个文件,私钥和证书。私钥和证书都放在服务器上,私钥用来加密数据,证书传递给客户端。自己签名的证书在传递给浏览器的时,因为证书不被信任,所以会弹出连接不安全,一般点高级->继续浏览,还是可以访问网页。如果我们的证书被根证书厂商签名过的话,就不会弹出不安全的提示,浏览器地址栏一般还有绿色小锁标志。以下来说一下怎么一步步生成证书。

  1. 使用openssl生成私钥文件server.key,以下的步骤都是在Ubuntu上的使用openssl操作的,需要注意一下Ubuntu的系统时间,不要制作出来的证书是过期的。

openssl genrsa -out server.key 2048

  

  2.1 修改 openssl.cnf,因为我之前在做这部分的时候,证书需要支持多个域名和 IP,所以才需要这个步骤,制作单域名证书可以不用修改配置文件。

  2.2 拷贝openssl.cnf到当前目录

cp /etc/ssl/openssl.cnf ./

  2.3 按以下修改拷贝过来的配置文件:

    1> 在 [ req ] 块下取消注释行 req_extensions = v3_req

    2> 确保[ req_distinguished_name ]下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉

    3> 在 [ v3_req ] 块下增加一行 subjectAltName = @alt_names

    4> 在文件末尾增加如下信息:

      [ alt_names ]

      DNS.1 = www.liqingjht.com

      DNS.2 = liqingjht.com

      IP.1 = 192.168.1.105

      IP.2 = 192.168.1.107

    4>tip>  注意有没有www是不一样的域名,我在做证书请求CSR文件的时候,有 IP 的需求,不过在交给厂商签名的时候,厂商建议不加入 IP ,说是现在的标准逐渐不支持这种做法,因此我就没加上 IP 了,如果厂商支持的话,这么做应该是可以的,因为自己签名试了一下。

  

  3.1 使用私钥和配置文件生成证书请求CSR文件server.csr,没有修改配置文件的不用写配置文件的参数

openssl req -new -key server.key -out server.csr -config ./openssl.cnf

  3.2 生成CSR文件需要填写一些信息,Common Name填写主要域名,这个域名要在DNS.XX里

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Fujian
Locality Name (eg, city) []:Xiamen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:cnblogs
Organizational Unit Name (eg, section) []:cnblogs
Common Name (e.g. server FQDN or YOUR name) []:www.liqingjht.com
Email Address []:liqingjht@163.com

  3>tip> server.csr 这个文件就是要拿给CA厂商签名的,server.key这个私钥文件自己保存好。拿给厂商签名后厂商会用他们的根证书前面这个CSR文件生成你服务器可用证书给你,在这之前我们可以自己充当CA厂商这个角色来测试一下。

  

  4.1 要生成用来前面CSR文件的根证书,首先创建CA目录

mkdir ./demoCA
mkdir demoCA/newcerts
touch demoCA/index.txt
echo 01 > demoCA/serial

  4.2 生成ca.key,并自签名生成ca.crt证书,需要填写密码两次,如1234,填写的Common Name要和上面生成CSR文件一致。其他步骤一样,建议还是按照CSR文件那样填写就好了。这里时间可以看到签了两年。

openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config ./openssl.cnf

  

  5. 使用自签署的CA证书签署服务器CSR证书请求,输入密码,一直按y就好了:

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf

  

  6. 这时候当前目录有这几个文件:ca.key ca.crt server.key server.crt server.csr,其中server.key server.crt就是要放在服务器上的,ca.key相当于电脑内置的根证书。将ca.crt下载到pc上,在浏览器管理证书那里切到根证书那栏,将ca.crt导入进来,这时候你用 https访问openssl.cnf里填写的DNS.XX 或 IP.XX 就不会跳出不安全提示了。将CSR文件交给厂商签名就是因为厂商的CA证书有内置在浏览器里,所以即使没有手动导入,也不会出现不安全提示。

Web Server CA证书签名步骤和自签名测试,支持多域名的更多相关文章

  1. 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】

    自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信   如果你的规划需要创建多个证书,那么使用私有 ...

  2. Thawte SSL Web Server 多域型SSL证书

    Thawte SSL Web Server 多域型SSL证书,最多支持25个域名,需要验证域名所有权和申请单位信息,属于企业验证型SSL证书,提供40位/56位/128位,最高支持256位自适应加密. ...

  3. Thawte SSL Web Server

      Thawte SSL Web Server ,需要验证域名所有权和申请单位信息,属于企业验证(OV)型SSL证书,提供40位/56位/128位,最高支持256位的自适应加密.被2048位的根证书签 ...

  4. 【转】推荐介绍几款小巧的Web Server程序

    原博地址:http://blog.csdn.net/heiyeshuwu/article/details/1753900 偶然看到几个小巧有趣的Web Server程序,觉得有必要拿来分享一下,让大家 ...

  5. PHP内置Web Server探究(一)启动Cli_Server

    自PHP5.4之后 PHP内置了一个Web 服务器(cli_server),类似于Python的内置server一样,方便我们开发阶段的调试 主要使用场景: 1,没有搭建nginx或apache等第三 ...

  6. 用openssl为WEB服务器生成证书(自签名CA证书,服务器证书)

    用openssl为WEB服务器生成证书(自签名CA证书,服务器证书) 来源: https://www.cnblogs.com/osnosn/p/10608455.html 来自osnosn的博客 写于 ...

  7. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性

    起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...

  8. CA证书、自颁发证书、自签名证书联系

    一.理论基础 ssl:secure socket layer(安全套接层协议)的缩写,通过此协议可以保证两个应用通信的可靠性和保密性.openssl:是ssl协议的实现.提供了对称加密算法.非对称加密 ...

  9. ca 证书、签名

    1.我现在没有个人CA证书,使用.中信建投网上交易,是如何保障安全的呢? 如果您目前没有个人CA证书,使用.中信建投网上交易,系统其实也是用CA证书的RSA体系进行加密的. 您在输入账户和密码进行登录 ...

随机推荐

  1. Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用

    1. BigInteger加减乘除法的使用 public BigInteger add(BigInteger val):加 public BigInteger subtract(BigInteger ...

  2. Tomcat相关目录及配置文件总结

    Tomcat根目录介绍      [bin]目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 很多环境变量的 ...

  3. Ecstore中Mootools和Jquery如何同时存在,解决冲突?

  4. memcache和数据库的使用技巧

    1.加速无数据的访问速度毋庸置疑取数据先去取下memcache里的数据,如果没有再去数据库取数据但这样如果我取100次都是没有的那么我得去数据库去取100次 如果还是重复的...那么效率就不高了 解决 ...

  5. 本地连接速度100.0mbps变10.0mbps如何恢复

    右键我的电脑--管理---设备管理器--网络适配器展开,可以看到网卡,右击属性--高级--连接速度和双工模式或(LINK SPEED)选项,选择100就好了   那么我们在选择的时候会有100M全双工 ...

  6. Hadoop源码解析之 rpc通信 client到server通信

    rpc是Hadoop分布式底层通信的基础,无论是client和namenode,namenode和datanode,以及yarn新框架之间的通信模式等等都是采用的rpc方式. 下面我们来概要分析一下H ...

  7. java虚拟机内存分析

    1.大致来说java虚拟机分为:堆  栈 栈在数据结构就是那个先进后出的栈.堆...这名字我一听就觉得大..毕竟我们形容东西多又没什么大多的组织的时候就是一堆一堆的....(原谅我发散性的思维,我是妹 ...

  8. (function(){})(jQuery)的功能和用途?

    1.为什么开发插件都这么写? 2.为什么要穿jQuery进去?在方法中直接用jquery的方法什么的不行吗? 1 首先(function(){})()这种写法 是创建了一个匿名的方法并立即执行(fun ...

  9. Python3 如何优雅地使用正则表达式(详解三)

    模块级别的函数 使用正则表达式也并非一定要创建模式对象,然后调用它的匹配方法.因为,re 模块同时还提供了一些全局函数,例如 match(),search(),findall(),sub() 等等.这 ...

  10. SQL语句中output的用法

    在SQL语句中,output可以作为返回值来使用, 1.我们先看这个存储过程 代码: 1 set ANSI_NULLS ON  2 set QUOTED_IDENTIFIER ON  3 go  4 ...