医院导航网站怎么做软件正版化情况及网站建设情况
安全控制
关于web服务器的安全是比较大的一个话题,里面所涉及的内容很多,Nginx反向代理是安全隔离来提升web服务器的安全,通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问。

使用SSL对流量进行加密
HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。
- SSL(Secure Sockets Layer)安全套接层
 - TLS(Transport Layer Security)传输层安全
 
上述这两个是为网络通信提供安全及数据完整性的一种安全协议,TLS和SSL在传输层和应用层对网络连接进行加密。
总结来说为什么要使用https:
http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ssl,并且可以防止流量劫持。
nginx添加SSL的支持
前置安装
 yum install openssl-devel    # CentOS/RHEL 
如果是使用yum安装的话,默认是有--with-http_ssl_module模块的。
如果是通过源码安装的话
- 将原有/usr/local/nginx/sbin/nginx进行备份
 - 拷贝nginx之前的配置信息
 - 在nginx的安装源码进行配置指定对应模块 ./configure --with-http_ssl_module
 - 通过make模板进行编译
 - 将objs下面的nginx移动到/usr/local/nginx/sbin下
 - 在源码目录下执行 make upgrade进行升级,这个可以实现不停机添加新模块的功能
 
Nginx的SSL相关指令
ssl
ssl:该指令用来在指定的服务器开启HTTPS
| 语法 | ssl_certificate file; | 
| 默认值 | |
| 位置 | http、server | 
server{    listen 443 ssl;
} 
ssl_certificate
为当前这个虚拟主机指定一个带有PEM格式证书的证书。
| 语法 | ssl_certificate file; | 
| 默认值 | |
| 位置 | http、server | 
ssl_certificate_key
该指令用来指定PEM secret key文件的路径
| 语法 | ssl_ceritificate_key file; | 
| 默认值 | |
| 位置 | http、server | 
ssl_session_cache
| 语法 | ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size] | 
| 默认值 | ssl_session_cache none; | 
| 位置 | http、server | 
- off:禁用会话缓存,客户端不得重复使用会话
 - none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数
 - builtin:内置OpenSSL缓存,仅在一个工作进程中使用。
 - shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定
 
ssl_session_timeout
开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。
| 语法 | ssl_session_timeout time; | 
| 默认值 | ssl_session_timeout 5m; | 
| 位置 | http、server | 
ssl_ciphers
指出允许的密码,密码指定为OpenSSL支持的格式
| 语法 | ssl_ciphers ciphers; | 
| 默认值 | ssl_ciphers HIGH:!aNULL:!MD5; | 
| 位置 | http、server | 
可以使用openssl ciphers查看openssl支持的格式。
ssl_prefer_server_ciphers
该指令指定是否服务器密码优先客户端密码
| 语法 | ssl_perfer_server_ciphers on|off; | 
| 默认值 | ssl_perfer_server_ciphers off; | 
| 位置 | http、server | 
生成证书
- 使用阿里云/腾讯云等第三方服务进行购买。
 - 使用openssl生成证书
 
先要确认当前系统是否有安装openssl
openssl version 
安装下面的命令进行生成
mkdir /root/cert # 创建目录并切换到该目录
cd /root/cert
openssl genrsa -des3 -out server.key 1024 # 生成带有密码保护的 RSA 密钥
openssl req -new -key server.key -out server.csr # 生成证书签名请求(CSR)
cp server.key server.key.org # 备份私钥文件并移除密码保护
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt # 自签名证书 
生成带有密码保护的 RSA 密钥
openssl genrsa -des3 -out server.key 1024 
 这将生成一个加密的 RSA 私钥文件 server.key,其中包含一个 1024 位的密钥。您将被要求输入一个密码来保护私钥文件,可以输入test
生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr 
这将使用私钥文件生成一个证书签名请求文件 server.csr。在生成过程中,您将被要求提供一些与证书相关的信息,例如组织名称、域名等
- 第一次会要求你输入你之前输入的密钥:test
 - 国家输入:CN
 - 省份:guangdong
 - 城市:guangzhou
 - 组织:gjs
 - 组织的:gjs
 - 域名:test
 - 邮箱地址:1216xx9850@qq.com
 - 密码:test
 - 公司:gjs
 
备份私钥文件并移除密码保护
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
 
 这将复制一份原始的私钥文件 server.key,并将其备份为 server.key.org。然后,使用 openssl rsa 命令从备份文件中删除密码保护,并将结果保存回 server.key 文件中。需要输入密钥test
自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
 
 这将使用私钥文件 server.key 和证书签名请求文件 server.csr 来生成一个自签名的 X.509 证书文件 server.crt。该证书的有效期将为 365 天。
完成上述步骤后,您将在 /root/cert 目录下获得以下文件
server.key: 不带密码保护的私钥文件server.crt: 自签名的 SSL 证书文件
开启SSL实例
server {listen       443 ssl;server_name  localhost;ssl_certificate      /root/cert/server.cert; # 使用了绝对路径指定证书ssl_certificate_key  /root/cert/server.key;  # 使用了绝对路径指定密钥ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}
}
 
测试

 
