快速创建自签名ssl证书

运行环境为Linux,且已安装openssl组件。若为Windows环境,请相应修改前3行代码即可。

mkdir -p ~/myssl
cd ~/myssl

cat <<EOF >self.cnf
[ req ]
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
[ v3_req ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = example.org
DNS.2 = *.example.org
EOF

SUBJECT="/C=CN"
SUBJECT="$SUBJECT/ST=Beijing"
SUBJECT="$SUBJECT/L=Beijing"
SUBJECT="$SUBJECT/O=ExampleOrg"
SUBJECT="$SUBJECT/OU=Devops"
SUBJECT="$SUBJECT/CN=example.org"
SUBJECT="$SUBJECT/emailAddress=ops@example.org"

openssl req -newkey rsa:4096 -x509 -nodes -days 3650 -extensions v3_req \
    -config self.cnf -keyout server.key -out server.crt -subj "$SUBJECT"

为废弃的openssl-1.0.2填坑 (.a转.so)

先吐个槽:话说php7已经大行其道,php8也开测了,某擎微平台却还运行在已经停止支持的php5上,而php5更是依赖了已废弃的openssl-1.0.x

帮小伙伴编译php5环境的时候,发现工具链已经无法很好的编译出openssl的lib库。编译出来的libcrypto.so竟然是0字节,其他文件均正常。调整各项参数,重新编译均无法解决。

最后,只好拿libcrypto.a开刀,尝试编译出正确的.so文件。

ar -x libcrypto.a
gcc -shared *.o -o libcrypto.so
rm *.o

工作原理: .so文件是动态库文件,.a是由一系列.o 文件通过ar程序打包在一起的静态库,要把它转成动态库只需先解开,生成一堆.o文件,再通过编译器(gcc 或 ifort)编成动态库即可。