SSL证书部署HTTPS站点Apache/Nginx配置
SSL证书及HTTPS协议
SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:
1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。
要设置安全服务器,使用公共钥创建一对公私钥对。大多数情况下,发送证书请求(包括自己的公钥),你的公司证明材料以及费用到一个证书颁发机构(CA).CA验证证书请求及您的身份,然后将证书返回给您的安全服务器。
但是内网实现一个服务器端和客户端传输内容的加密,可以自己给自己颁发证书,只需要忽略掉浏览器不信任的警报即可!
由CA签署的证书为您的服务器提供两个重要的功能:
- 浏览器会自动识别证书并且在不提示用户的情况下允许创建一个安全连接
- 当一个CA生成一个签署过的证书,它为提供网页给浏览器的组织提供身份担保。
- 多数支持ssl的web服务器都有一个CA列表,它们的证书会被自动接受。当一个浏览器遇到一个其授权CA并不在列表中的证书,浏览器将询问用户是否接受或拒绝连接
生成SSL证书
# 生成一个RSA密钥
$ openssl genrsa -des3 -out 33iq.key 1024 # 拷贝一个不需要输入密码的密钥文件
$ openssl rsa -in 33iq.key -out 33iq_nopass.key # 生成一个证书请求
$ openssl req -new -key 33iq.key -out 33iq.csr # 自己签发证书
$ openssl x509 -req -days 365 -in 33iq.csr -signkey 33iq.key -out 33iq.crt
第3个命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。
HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443。
apache,nginx配置HTTPS
nginx配置,/etc/nginx/nginx.conf 加入:
server {
listen 80;
server_name kwdst.welcom.cn;
rewrite ^ https://$http_host$request_uri? permanent;
}
server {
listen 443 ssl;
server_name kwdst.welcom.cn
ssl on;
ssl_certificate /etc/nginx/cert/2ceo.pem; //路径
ssl_certificate_key /etc/nginx/cert/2ceo.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /var/www/static;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
}
}
Apache 可直接在apache2.conf中加入也可以在/etc/apache/sites-enabled/创建 .conf后缀的配置文件.
<VirtualHost *:80>
ServerName kwdbiz.welcom.cn
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/carku/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]</VirtualHost>
<VirtualHost *:443>
ServerName kwdbiz.welcom.cn
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/carku/public ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on
SSLCertificateFile /etc/apache2/cert/2ceo/2ceo.pem
SSLCertificateKeyFile /etc/apache2/cert/2ceo/2ceo.key <FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
重启apache/nginx即可访问HTTPS 网站.
使用HTTPS协议安全但对服务器来说是很大的负载开销,所以一般对一些安全有要求的操作使用HTTPS安全加密,如:交易,用户密码相关等.
在https server下加入如下配置:
if ($uri !~* "/login.php$")
{
rewrite ^/(.*)$ http://$host/$1 redirect;
}
在http server下加入如下配置:
if ($uri ~* "/login.php$")
{
rewrite ^/(.*)$ https://$host/$1 redirect;
}
这样一来,用户会且只会在访问login.php的情况下,才会通过https访问。
SSL证书部署HTTPS站点Apache/Nginx配置的更多相关文章
- Nginx配置SSL证书部署HTTPS网站(颁发证书)
一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...
- Nginx配置SSL证书部署HTTPS网站
1.购买ssl证书 购买网站:沃通 2.上传证书到nginx服务器,然后进行解压. 解压后的的效果: [root@bubidev-ng3 nginx]# pwd/etc/nginx [root@bub ...
- Nginx配置SSL证书部署HTTPS方法
1.申请域名,绑定服务器ip(我申请的是阿里云服务器,以下就此为例) 2.可以在阿里云上免费申请SSL证书(下载证书,后续会用到) 3.在服务器中配置证书 在服务器上安装Nginx 将下载好的证书上传 ...
- Nginx自建SSL证书部署HTTPS网站
一.创建SSL相关证书 1.安装Nginx(这里为了测试使用yum安装,实际看具体情况) [root@localhost ~]# yum install nginx -y #默认yum安装已经支持SS ...
- 基于HTTPS的接口测试——nginx配置SSL
目录 基于HTTPS的接口测试--nginx配置SSL 1. 背景 2. 所需环境与域名备案解析 2.1 云服务器 2.2 域名 2.3 SSL证书 2.4 网站备案 2.5 域名解析 3.nginx ...
- Linux下Nginx配置阿里云 SSL证书实现HTTPS访问
这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...
- LNMP安装Let’s Encrypt 免费SSL证书方法:自动安装与手动配置Nginx
前几天介绍了最新StartSSL免费SSL申请与配置,很多人看到部落介绍SSL证书安装时总是推荐了OneinStack,因为OneinStack提供了一键添加和配置Let's Encrypt 免费SS ...
- 在IIS下部署SSL证书实现HTTPS
在IIS下部署SSL证书实现HTTPS HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.谷歌已经制定了一项长远的计划,它的最终目标是将所有通过HTTP协议呈现的网页标为“不安全” ...
- windows系统配置Nginx使用SSL证书实现Https反向代理
Nginx反向代理服务,可以代理接收请求,并把请求转发到设置好的其他服务器上. 例如,Nginx服务器为 100.101.102.103,A服务为 100.101.102.104 ,通过Nginx配置 ...
随机推荐
- 学习ECMAScript标准和具体实现-JavaScript
在NDN的JavaScript Guide里,Array和Map,Set都属于collections of data.它们的区别就是,Array是ordered by an index value, ...
- TypeError: 'generator' object is not subscriptable
TypeError: 'generator' object is not subscriptable 生成器对象不可以带下标 def get_row(self,row_no): if not isin ...
- [未解决]报错: crawlab启动失败
拉取镜像 docker pull tikazyq/crawlab:latest 一键启动 docker-compose up 报错提示:
- Manacher(输出最长回文串及下标)
http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit: 3000/1000 MS (Java/Others ...
- CodeChef Little Elephant and Balance
Given an array A1,A2...AN, you have to print the size of the largest contiguous subarray such that L ...
- P3773 [CTSC2017]吉夫特
传送门 看到组合数在模 $2$ 意义下的乘积,考虑用 $lucas$ 定理把组合数拆开 $lucas$ 告诉我们,$C(n,m)$ 在模 $k$ 意义下的值,相当于 $n,m$ 在 $k$ 进制下每一 ...
- vue2.0在IE11无法打开的解决办法
npm 安装bebel-polyfill npm install --save-dev babel-polyfill 在webpack.base.conf.js文件中将 module.exports ...
- 20180315-Python面向对象编程设计和开发
1.在子类中调用父类的方法 在子类派生出的新方法中,往往需要重用父类的方法,我们有两种实现方式: 方式一:父类名.父类方法() Animal.__init__(self,name) 方式二:super ...
- 屏蔽命令任何输出的:>/dev/null 2>&1
- Git--01 基础 - 远程仓库的使用
目录 Git 基础 - 远程仓库的使用 远程仓库的使用 查看远程仓库 添加远程仓库 从远程仓库中抓取与拉取 推送到远程仓库 查看某个远程仓库 远程仓库的移除与重命名 Git 基础 - 远程仓库的使用 ...