- 数据加密算法
- 网络安全证书
- openssl软件实践
- 标准命令
- 信息摘要命令,单向加密命令
- 加密命令
- 指定私钥长度1024,并且将生成的私钥信息保存在文件里,且利用小括号功能,修改子shell的umask
- 读取私钥文件,选择非对称加密算法rsa,生成公钥,写入到文件中
- 生成自签的证书
- 搭建安全的站点
- Nginx部署HTTPS
- 确保机器安装了openssl和openssl-devel,创建证书
- 生成私钥文件,利用子shell降低文件权限
- 自己签发证书,crt证书扩展名
- 向机构申请证书,我们这里生成的是证书请求文件,而不是直接生成证书,运维发送该文件给机构,请求合法证书
- 一般这个证书颁发,需要等待一周的时间
- 确保 nginx.conf 中 http{} 下有如下代码,且可以删除自带的 server{} 配置,将配置文件写在单独的文件,不让配置文件看的过于冗长
- 创建https配置文件
数据加密算法
网络安全设计很多方面,而网络数据的安全传输通常会面临一下几方面的威胁:
- 数据窃听与机密性:即怎样保证数据不会因为被截获或窃听而暴露
- 数据篡改与完整性:即怎样保证数据不会被恶意篡改
- 身份冒充与身份验证:即怎样保证数据交互双方的身份没有被冒充 | 数据加密方式 | 描述 | 主要解决的问题 | 常用算法 | | —- | —- | —- | —- | | 对称加密 | 指数据加密和解密使用相同的密钥 | 数据的机密性 | DES,AES | | 非对称加密 | 也叫公钥加密,指数据加密和解密使用不同的密钥-密钥对儿 | 身份验证 | DSA,RSA | | 单向加密 | 指只能加密数据,而不能解密数据 | 数据的完整性 | MD5,SHA系列算法 |
网络安全证书
从上述加解密方式来看,对于网站的身份验证来看,公钥的获取尤为重要,发送方在顺利生成公私钥后,需要准确的将公钥传递给接收方,才能完全完成验证工作。
而证书的作用就是让用户使用网站时,能够直观明白网站安全的一种方式
== >> https
获取第三方证书
证书里有什么
openssl软件实践
openssl由三部分组成:
检查版本
openssl version
配置文件
/etc/pki/tls/openssl.conf
获取openssl命令操作
openssl -?
标准命令
Standard commands …
信息摘要命令,单向加密命令
Message Digest commands (see th ‘dgst’ command for more details) …
加密命令
Cipher commands (see the ‘enc’ command for more details) …
测试机器对openssl支持的加密算法进行速度测试,检测服务器性能
openssl speed
openssl加密命令
语法:
openssl enc -加密算法 -in filename -out filename
文件加密
openssl enc -des3 -salt -a -in password.txt -out pwd.des3
解密文件
openssl enc -des3 -d -salt -a -n pwd.des3 -out pwd.src
参数解释:
enc:openssl把众多的对称加密算法,统一集成在了enc指令,用法是 enc -算法名
-des3:指定算法
-d:指定解密
-e:指定加密
-salt:密码加盐,防止密码被破解
-a:基于base64位编码,可选参数
openssl创建私有证书
- 创建私钥和公钥,模拟证书颁发机构生成证书,生成一对密钥
指定私钥长度1024,并且将生成的私钥信息保存在文件里,且利用小括号功能,修改子shell的umask
(umask 077;openssl genrsa -out server1024.key 1024)
读取私钥文件,选择非对称加密算法rsa,生成公钥,写入到文件中
openssl rsa -in server1024.key -pubout -out server1024.key.pub
生成自签的证书
openssl req -new -x509 -key server1024.key -out server.crt -days 365

搭建安全的站点
网络安全背景
网络安全涉及问题

Nginx部署HTTPS
利用证书实现HTTPS访问Nginx服务,需要nginx使用ssl模块配置HTTPS支持,默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定 -with-http_ssl_module 参数,安装模块依赖于openssl库和一些引用文件,这些文件并不在同一个软件包中,通常这个文件名类似 libssl-dev
nginx的https协议需要ssl模块的支持,不仅仅在编译nginx时使用对应参数加入ssl模块。还需要服务器私钥,服务器证书,如果是公司对外环境,这个证书需要购买第三方的权威证书,否则用户体验得不到保障
部署https实践
创建nginx需要的证书文件
确保机器安装了openssl和openssl-devel,创建证书
yum install openssl openssl-devel -y
确保nginx支持了ssl模块,查看nginx编译信息即可
nginx -V
模拟证书颁发机构CA创建证书
生成私钥文件,利用子shell降低文件权限
(umask 077;openssl genrsa -out server1024.key 1024)
自己签发证书,crt证书扩展名
openssl req -new -x509 -key server1024.key -out server.crt -days 365
向机构申请证书,我们这里生成的是证书请求文件,而不是直接生成证书,运维发送该文件给机构,请求合法证书
openssl req -new -key server1024.key -out server.csr
一般这个证书颁发,需要等待一周的时间
配置nginx,加载私钥,证书
确保 nginx.conf 中 http{} 下有如下代码,且可以删除自带的 server{} 配置,将配置文件写在单独的文件,不让配置文件看的过于冗长
include extra/*.conf
创建https配置文件
vim 443.conf
#nginx默认的http虚拟主机80端口,且要支持转发到https的443端口server {listen 80;server_name _;charset utf-8;rewrite ^(.*)$ https://$host$1 permanent;location / {root html;index index.html;}}# 443 https的虚拟主机配置,且支持证书认证server {server_name _;listen 443 ssl;#写入对应证书和私钥的绝对路径ssl_certificate /opt/nginx/key/server.crt;ssl_certificate_key /opt/nginx/key/server1024.key;charset utf-8;location / {root html;index index.html index.htm;}}
检验结果:开启nginx服务,查看对应ip地址的首页网站,查看是否是https加密安全网站,注意:本地自建的证书,可能有些浏览器并不能读取
