MENU

标签 Linux 下的文章

Centos7安装OpenSSL小记

前言

最近给博客网站nginx编译支持TLS1.3协议,TLS1.3在加密上有所提升,还有一点是握手过程中,第一次握手只需要一个RTT而第二次访问则是0-RTT,因此特意去升级尝鲜。由于TLS1.3还需要OpenSSL1.1.1以上的版本,而系统自带OpenSSL是1.1.0版本。

安装

# gcc编译工具
yum install gcc -y

# 源码下载
wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.tar.gz
tar zxvf OpenSSL_1_1_1g.tar.gz

# 配置
cd openssl-OpenSSL_1_1_1g
./config --prefix=/usr

# 编译安装
make
ldconfig

# 验证版本
openssl version  

nginx部分

  • 编译
# nginx configure时候加入以下支持TLS1.3
--with-openssl=/usr/bin/openssl --with-openssl-opt=enable-tls1_3
  • SSL证书配置
# 添加TLSv1.3
ssl_protocols  TLSv1.2 TLSv1.3;  
# 加入TLS1.3引入的新算法
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;

可以在Console控制台看到使用TLS1.3

或者使用shell中检查(以下两个命令均可验证)

curl -Ivvv --tlsv1.3 https://icharle.com
openssl s_client  -connect icharle.com:443 -state

Logrotate日志切割

前言

最近将docker上的nginx服务完善添加日志的切割,之前一直是一个文件时间久了出现体积过大,而且不利于查看访问情况(比如每个小时情况、每天的情况等)

阅读全文

docker无视防火墙问题总结

前言

之前一直使用docker来部署项目,不过发现直接使用-p映射端口则出现问题,如nginx映射80端,一般都会写-p 80:80,这样导致直接透过系统本机的防火墙,不用开端口可以直接外网访问80端。之前一直使用阿里云、腾讯云机器,可以给ECS实例设置安全组方式限制外网端口,不过针对没有这种设置操作的服务器实例之前一直没有认真研究,现在做一下这次折腾总结记录。

解决方法

  • 使用host网络,docker默认是使用bridge桥接网络方式。
  • 使用expose方式暴露端口在本机,然后采用nginx、haproxy等代理工具做一次转发
  • 映射端口改用-p 127.0.0.1:8080:8080,后在本机nginx代理工具映射公网访问服务
  • 禁用docker的iptables规则(下面详细介绍该方法)

阅读全文

I/O多路复用之select、poll、epoll

I/O多路复用可以在单线程的情况下,同时监听多个描述符fd,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。
但是select、poll、epoll本质上都是同步I/O,因为它们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,相对于异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。

阅读全文

Unix五种I/O模型

前言

最近阅读《Unix网络编程卷1:套接字联网API》、《Linux内核完全注释》一书,阅读涉及到其中的I/O,弄清楚三个I/O复用函数select、poll、epoll的区别,也将涉及到的用户态or内核态、文件描述符fd、上下文切换,so 把知识点做一次总结记录。

阅读全文