Openssl(linux)
1 OpenSSL下载安装
1.0下载openssl在这里下载(https://www.openssl.org/source/old/1.1.1/)
-
- 安装OpenSSL: 将下载的压缩包放在根目录(根据自己习惯记好位置即可)
1)在文件夹下解压缩,得到openssl-1.1.1f文件夹
# tar -xzf openssl-1.1.1f.tar.gz
2)进入解压好的目录文件openssl-1.1.1f文件夹
# cd openssl-1.1.1f
3)创建文件夹(这里位置和下面4设定的位置要一致)
# mkdir /usr/local/openssl
4) 设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
# ./config --prefix=/usr/local/openssl
5)执行命令
# ./config -t
6) 执行make,编译Openssl
# make
7) 安装 Openssl
# make install
8)查看是否安装成功或是否已经安装过
# openssl version
9)卸载旧版本 OpenSSL的方法(一般不用)
1 apt-get purge openssl
2 rm -rf /etc/ssl #删除配置文件
1.2报错情况 未安装gcc
yum -y install gcc ,安装gcc网络要顺畅
2 OpenSSL生成证书
2.1创建根证书CA
1)查看openssl的配置文件openssl.cnf的存放位置(即openssl的安装位置)
openssl version -a
2)查看openssl的配置文件openssl.cnf,因为配置文件中对证书的名称和存放位置等相关信息都做了定义。
vim /etc/pki/tls/openssl.cnf
3)创建为根证书CA所需的目录及文件
#根据配置文件信息,到CA根目录,若没有则自己创建(也可自定义记好即可)
cd /etc/pki/CA (mkdir /etc/pki/CA 创建目录)
#创建配置文件信息中所需的目录及文件
mkdir -pv {certs,crl,newcerts,private}
touch {serial,index.txt}
4)指明证书的开始编号
echo 01 >> serial
5)生成根证书的私钥(注意:私钥的文件名与存放位置要与配置文件中的设置相匹配)。
(umask 077; openssl genrsa -out private/cakey.pem 2048)
参数说明:
genrsa --产生rsa密钥命令
-aes256--使用AES算法(256位密钥)对产生的私钥加密,这里没有此参数,则只是用了rsa算法加密。
-out ---输出路径,这里指private/ca.key.pem
这里的参数2048,指的是密钥的长度位数,默认长度为512位
6)生成自签证书,即根证书CA,自签证书的存放位置也要与配置文件中的设置相匹配,生成证书时需要填写相应的信息。(时间的话使用3650也就是十年)注意写下面内容时一定记好,无法删除
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 3650
Country Name (2 letter code) [XX] 国家俩个字代码 CN (中国大陆)
State or Province Name (full name) [] 州或省名称(全名)[]
Locality Name (eg, city) [Default City]: 地区名称(例如,城市)[默认城市]:
Organization Name (eg, company) [Default Company Ltd]组织名称(如公司)[违约公司有限公司]
Organizational Unit Name (eg, section) []组织单位名称(例如,部门)[]
Common Name (eg, your name or your server's hostname) []: 通用名称(例如,您的名称或服务器的主机名)[]:
A challenge password []挑战密码[]
An optional company name []:可选公司名称[]:
-new:表示生成一个新证书签署请求
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
-key:用到的私钥文件
-out:证书的保存路径
-days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days
这样子,根证书CA就已经生成完成了。
2.2颁发证书
1)在需要证书的服务器上,生成证书签署请求,生成私钥,该私钥的位置可随意定
(umask 077; openssl genrsa -out test.key 2048)
2)生成证书签署请求
openssl req -new -key test.key -out test.csr -days 3650
3)颁发证书,即签名证书,生成crt文件 #颁发证书
openssl ca -in /etc/pki/CA/test/test.csr -out /etc/pki/CA/test/test.crt -days 3650
4)#查看证书信息
openssl x509 -in /etc/pki/CA/test/test.crt -noout -serial -subject
5)格式转换为pfx格式的私钥
openssl pkcs12 -export -out test.pfx -inkey /etc/pki/CA/test/test.key -in test.crt
注意,-inkey的值test.key是需要证书服务器上生成的私钥key文件
6)格式转换为cer格式的公钥
openssl x509 -inform pem -in test.crt -outform der -out test.cer
#查看cer证书信息
openssl x509 -in test.cer -text -noout
#若报错unable to load certificate,则说明你打开的证书编码是der格式,需要用以下命令
openssl x509 -in test.cer -inform der -text -noout
参数含义:
-inform pem,由于输入的test.crt文件是以pem编码的,故需要指定以pem编码来读取。
-outform der,输出的test.cer文件需要以der编码。
Nginx(linux)
Nginx下载安装
1.0下载安装
在这里下载(http://nginx.org/en/download.html)
-
- nginx安装
1)安装需要依赖的其他库
需要安装gcc环境
# yum install gcc-c++
第三方的开发包
# yum install -y pcre pcre-devel
#yum install -y zlib zlib-devel
# yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)把nginx源码包上传到linux系统上
3)解压到/usr/local/nginx (目录自定义,没有则创建)
# tar -xvf nginx-1.19.0.tar.gz -C /usr/local/nginx
4) 使用cofigure命令创建一个makeFile文件
执行下面的命令的时候,一定要进入到nginx-1.14.0目录里面去(注:下面整个都是命令)
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \--with-http_stub_status_module \--with-http_ssl_module \--with-file-aio \--with-http_realip_module
参数:error http log 日志地址
5)创建目录/var/temp/nginx/
# mkdir /var/temp/nginx -p
6)进入nginx-1.19.0里面执行make命令进行编译
#make
7)进入nginx-1.19.0里面执行make install 命令进行安装
#make install
8)进入安装位置/usr/local/nginx查看目录结构
#ll
Nginx启动和配置
2.1启动nginx
进入sbin目录,执行命令./nginx
[root@admin sbin]# ./nginx
2.2查看nginx是否启动
[root@admin sbin]# ps -aux | grep nginx
参数说明:
ps命令用于报告当前系统的进程状态。
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
2.3关闭nginx
[root@admin sbin]# ./nginx -s stop
或者
[root@admin sbin]# ./nginx -s quit
2.4刷新配置文件
[root@admin sbin]# ./nginx -s reload
Nginx配置文件
nginx配置文件的位置:/usr/local/nginx/conf/nginx.conf
根据配置文件可以访问多个端口(注:配置多个虚拟机时确认端口是否开启,防护墙,命令在下面)
http默认是80端口 https默认是443端口
server {
listen 81;
server_name localhost;
location / {
#root html;
#index index1.html index1.htm;
proxy_pass https://www.baidu.com/?tn=88093251_34_hao_pg;
} }
http和https 将ssl on;注释就可以了,其中http访问80端口,而https访问443端口(http默认80端口,https默认443端口)
server {
listen 80;
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/cert/test.crt;# 证书位置
ssl_certificate_key /usr/local/nginx/cert/test.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 ~ .*\.(gif|jpg|jpeg|png)$ { #这里是访问静态资源图片
expires 24h;
root /home/images/;#指定图片存放路径
access_log /usr/local/nginx/logs/images.log;#图片 日志路径
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /home/images/;#代理临时路径
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass https://127.0.0.1:443;#代理访问地址
}
}
location / {
proxy_pass https://www.baidu.com/; #这里的xx.cn 是我们需要转发的 ,配合 修改hosts文件 : 127.0.0.1 xx.cn
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
注意事项命令
启动:
start nginx或nginx.exe
2、停止:
nginx.exe -s stop或nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
3、重新载入Nginx:
nginx.exe -s reload
当配置信息修改,需要重新载入这些配置时使用此命令。
4、重新打开日志文件:
nginx.exe -s reopen
5、查看Nginx版本:nginx -v
Nginx /sbin文件下
启动./nginx
查看ps -aux | grep nginx
关闭 ./nginx -s stop ./nginx -s quit
刷新配置文件 ./nginx -s reload
lsof -i:端口号 查看端口是否开启
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 1935 //查看所有1935端口使用情况·
注意!!!!
一定查看端口是否开启,防火墙是否开启。
检查Nginx是否支持SSL
/usr/local/nginx/sbin/nginx -V
configure arguments中是否有--with-http_ssl_module
生成秘钥证书的另一种方式
1. 使用openssl生成密钥privkey.pem:
openssl genrsa -out privkey.pem 1024/2038
2. 使用密钥生成证书server.pem:
openssl req -new -x509 -key privkey.pem -out server.pem -days 3650
Nginx访问资源
location ~ \.(mp4|png|txt) {
root /usr/local/tomcat9/webapps/scm;
autoindex on;
}
注意root代表的是替换请求URL中域名的值,如请求的URL为 https:www.xxx.com/fs/edsfsf.png,nginx会将域名替换为root值去找文件,这个时候文件在系统中的路径是 :
/usr/local/tomcat9/webapps/scm/fs/edsfsf.png
问题:遇到403无权访问时,可将 配置文件中的这个配置加上 user root;
# 这里是访问的路径,即:http://{server_name}/update/sso
location /update/sso{
# 关联的本地目录
alias /tianjun/files/sso;
# 是否自动生成目录树(自动索引)
autoindex on;
}
如有雷同的请联系修改