Category: LINUX


LINUX版WPS无法打开PDF解决方法

wpspdf 依赖于 libtiff5.so.5 以支撑其 PDF 功能。而系统更新后,Arch Linux 提供的是 libtiff.so.6 或更新版本,导致其无法正常工作。

安装libtiff5即可解决。
yay -S libtiff5

chrome命令行设置代理

google-chrome-stable –proxy-server=”socks5://127.0.0.1:1080″

linux版wps粗体无法显示的问题

原因:版本 11.1.0.11704-1 与 freetype2 版本 2.13.1 和 2.13.2 兼容性不佳。

方法一:降级freetype2 软件包至 2.13.0 版本

sudo downgrade ‘freetype2=2.13.0’

重启WPS后生效。

方法二:另一种办法是在wps的desktop文件中添加旧的freetype2库文件位置的环境变量,这样可以无需降级系统的freetype2

浏览器下载
https://archive.org/download/archlinux_pkg_freetype2/freetype2-2.13.0-1-x86_64.pkg.tar.zst

解压缩文件:
tar -xvf freetype2-2.13.0-1-x86_64.pkg.tar.zst -C /test

用如下命令加载动态链接库并拉起WPS
env LD_LIBRARY_PATH=/test/freetype2-2.13.0-1-x86_64/usr/lib wps

for i in *.mp4; do mv -f $i `echo $i | sed 's/\[[^]]\+\]//g'`; done
或者
for i in *.mp4; do mv -f $i `echo $i | sed 's/\[[^]]*\]//g'`; done

PS:
开头是\[,结尾是\]。需要转义,表示匹配 [ 和 ] 本身。
^出现在[]中的第一个字符时,表示取反。既表示不接受该方括号表达式中的字符集合。
+匹配前面的子表达式一次或多次。要匹配 + 字符,使用 \+。
*匹配 0 次或多次。

程序快捷方式或者命令行运行时添加如下任一参数即可:

–disable-gpu-sandbox
禁用GPU进程沙箱

–no-sandbox
禁用electron的沙箱

–in-process-gpu
将GPU进程作为线程运行

编译安装高版本的OpenSSL

1、安装编译环境,下载lts版本OpenSSL
#yum group install ‘Development Tools’
yum install gcc perl-core perl-IPC-Cmd zlib-devel
wget https://www.openssl.org/source/openssl-3.0.10.tar.gz

2、解压并进入目录
tar -xvzf openssl-*.tar.gz
cd openssl-*

3、配置、编译、安装
./config –prefix=/usr/local/ssl –openssldir=/usr/local/ssl shared zlib
make && make install

4、配置OpenSSL动态链接库(若跳过这一步,就需要export一个全局变量LD_LIBRARY_PATH)
echo “/usr/local/ssl/lib64” >> /etc/ld.so.conf
或者
echo /usr/local/ssl/lib64 > /etc/ld.so.conf.d/openssl-3.0.10.conf
# 让新添加的library动态链接库路径生效
ldconfig -v

5、使用高版本替换系统默认的OpenSSL版本
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/bin/c_rehash /usr/bin/c_rehash.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/bin/c_rehash /usr/bin/c_rehash
或者
mv /usr/bin/openssl /usr/bin/openssl.bak && mv /usr/bin/c_rehash /usr/bin/c_rehash.bak
alternatives –install /usr/bin/openssl openssl /usr/local/ssl/bin/openssl 1
alternatives –install /usr/bin/c_rehash c_rehash /usr/local/ssl/bin/c_rehash 1

PS:升级高版本openssl若与使用中的LINUX发行版二进制文件不兼容,会把操作系统搞崩。建议保留操作系统原来的版本,再装一套新版本使用。
编译参数说明:
-–prefix and -–openssldir:这2个选项必须同时使用且设置到相同的目录。默认安装路径是usr/local/ssl/目录。
zlib:使用静态的zlib压缩库。
shared:生成动态连接库。

1、查看OpenSSL版本
openssl version

2、查找OpenSSL原版路径
whereis openssl

3、安装EPEL里面的1.1版本
yum install -y openssl11 openssl11-devel

4、查找1.1版的OpenSSL路径
whereis openssl11
# 显示如下:
openssl11: /usr/bin/openssl11 /usr/lib64/openssl11 /usr/include/openssl11 /usr/share/man/man1/openssl11.1.gz

5、使用高版本替换系统默认的OpenSSL路径
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/lib64/openssl /usr/lib64/openssl.bak
mv /usr/include/openssl/ /usr/include/openssl.bak
ln -s /usr/bin/openssl11 /usr/bin/openssl
ln -s /usr/lib64/openssl11 /usr/lib64/openssl
ln -s /usr/include/openssl11 /usr/include/openssl

用OPENSSL创建自签名CA证书

一、创建自签 CA 证书,主要分为两个部分: 创建CA 根证书及签发客户端证书。具体每个目录存储什么信息,可以查看 openssl 的配置文件:vi /etc/ssl/openssl.cnf
1、创建 CA 目录
mkdir -p ~/ssl/demoCA/{certs,newcerts,crl,private}
cd ~/ssl/demoCA
Touch index.txt
echo “01” > serial

2、修改 openssl.cnf 文件
建议拷贝 openssl.cnf 文件到自定义文件夹下,这样可以自定义证书和证书申请中的一些属性和扩展,如秘钥扩展等:
sudo cp /etc/ssl/openssl.cnf ~/ssl/openssl.cnf
vi ~/ssl/openssl.cnf

3、生成 CA 根证书及密钥
openssl req -new -x509 -newkey rsa:4096 -keyout cakey.key -out cacert.crt -config openssl.cnf -days 365

BTW:
使用 X.509 证书结构生成证书,X.509 证书的结构是用 ASN1(Abstract Syntax Notation One)进行描述数据结构, X.509 证书编码格式主要有两种: .PEM 和.DER。

.DER 是二进制编码,可包含所有私钥、公钥和证书,是大多数浏览器的缺省格式,常见于 Windows 系统中的证书格式。
.PEM 是明文格式的, 以 “—–BEGIN CERTIFICATE—– 开头,已 —–END CERTIFICATE—– 结尾”, 中间是经过 base64 编码的内容, Apache 和 NGINX 服务器偏向于使用这种编码格式,也是 openssl 默认采用的信息存放方式。PEM 其实就是把 DER 的内容进行了一次 base64 编码。

此处通过命令生成扩展名为.crt 的根证书文件和扩展名为.key 的公钥,生成的证书和公钥可能是.PEM 编码格式,也可能是.DER 编码格式。

4、Linux 查看证书信息,编码,转码:
4.1、查看公钥的内容命令为:
openssl rsa -noout -text -in cakey.key

4.2、查看证书的内容命令为:
openssl x509 -noout -text -in cacert.crt

4.3、证书编码格式转换:
PEM 转为 DER:openssl x509 -in cacert.crt -outform der -out cacert.der
DER 转为 PEM:openssl x509 -in cert.crt -inform der -outform pem -out cacert.pem

二、签发客户端证书
使用 OpenSSL 创建客户端证书时,请注意:
创建私钥时,请将长度指定为 4096。
创建证书时,对于 -extensions 参数,指定 usr_cert。

1、生成 4096 bit 的客户端私钥
openssl genrsa -out client.key 4096

2、用该客户端私钥生成证书签名请求,扩展名.csr
openssl req -new -key client.key -out client.csr -config openssl.cnf

3、使用 CA 根证书签发客户端证书。(当使用 CA 签发客户端证书时,就会加上 usr_cert 的证书扩展项)
openssl ca -in client.csr -out client.crt -cert cacert.crt -keyfile cakey.key -config openssl.cnf

4、把客户端证书和私钥保存为.pem 格式
cat client.crt client.key > client.pem

5、如需导出到windows供VPN客户端使用, 需把客户端证书转换成.pfx 格式
openssl pkcs12 -export -inkey client.key -in client.pem -out client.pfx

1、生成服务器私钥(可以选择是否使用密码保护私钥,设置私钥密码的话,每次启动服务器搜需要输入该密码从而保证了私钥的安全性)
openssl genrsa -out client.key 4096

2、生成证书签名请求(CSR)。其中一个提示是 Common Name (e.g. YOUR name),这个非常重要,这一项应填入 FQDN(Fully Qualified Domain Name)完全合格域名/全称域名。例如*.test.com
openssl req -new -key client.key -out client.csr

3、使用上一步的证书签名请求签发证书
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt

4、以上三个步骤也可以通一个简单的方法,实现一步创建10年,无密码私钥(也能用-noenc替换-nodes)和证书:
openssl req -new -x509 -newkey rsa:4096 -keyout client.key -out client.crt -days 3650 -nodes

PS:
-new -x509:生成X509格式新证书
-newkey rsa:4096:使用长度为4096位的RSA密钥
-days 3650:有效期10年
-nodes(-noenc):不加密私钥

centos搭建http+https+svn服务

一、安装https+svn
yum install mod_dav_svn subversion mod_ssl

二、设置apache
# 生成有效期100年的证书:
cd /etc/httpd/conf/
openssl req -new -x509 -keyout server.key -out server.crt -days 36500 -nodes

# 修改https证书指向
vi /etc/httpd/conf.d/ssl.conf
ServerName SVN
SSLCertificateFile /etc/httpd/conf/server.crt
SSLCertificateKeyFile /etc/httpd/conf/server.key

# 加载mod_dav_svn,删除这两行的注释
vi /etc/httpd/conf.modules.d/10-subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

# 加载mod_ssl(启用SSL,取消/etc/httpd/conf/httpd.conf中SSL配置行的注释,不同LINUX版本,配置文件路径或文件名各不相同,请自行修改)
vi /etc/httpd/conf.modules.d/00-ssl.conf
#Include /etc/httpd/conf/extra/httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

vi /etc/httpd/conf.d/subversion.conf
# 在 Location 部份加入AuthzSVNAccessFile /home/svn/repositories/conf/authz来支持基本验证,并将 Apache 指向实际放置版本库的地方。

DAV svn
SVNParentPath /home/svn/repositories
AuthzSVNAccessFile /home/svn/repositories/conf/authz
AuthType Basic
AuthName “Subversion repos”
# Require SSL connection for password protection.如果未启用https服务,请注释掉SSLRequireSSL。加入了这行,也会导致http服务无法访问svn。
# SSLRequireSSL
AuthUserFile /home/svn/repositories/conf/passwd
# Satisfy Any
Require valid-user

三、创建版本库及目录
mkdir -p /home/svn/repositories/conf
svnadmin create /home/svn/repositories/p1
# 设置权限
chown -R apache.apache /home/svn/repositories/p1
service httpd restart

四、配置修改,使用统一的账户和权限去管控多个项目,可以将多个项目的authz和passwd文件统一放在一处,在多个项目的svnserve.conf文件中配置这两个文件的绝对路径,并在authz中对不同的项目设置用户访问权限。
cd /home/svn/repositories/p1/conf
cp authz passwd /home/svn/repositories/conf

五、设置p1版本库的访问策略,在[general]中取消以下行的注释或者添加:
vi /home/svn/repositories/p1/conf/svnserve.conf
# 禁止匿名访问。可以是read、write,none,默认为read
anon-access = none
#经过认证的用户有写权限
auth-access = write
#指定用户存放用户名与密码的文件,该文件位于conf目录下名为passwd
password-db = /home/svn/repositories/conf/passwd
#指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为authz
authz-db = /home/svn/repositories/conf/authz
#设置版本库域,如果两个版本库的认证域相同,他们将使用相同的密码数据。(指定仓库的认证域. 该选项主要被客户端使用, 用来关联缓存的认证证书和特定的某个或某些仓库, 正因为如此, 除非多个仓库使用了相同的密码数据库, 否则的话, 最好把每个仓库的认证域都设置 成独一无二的值. 仓库认证域的默认值是它的 UUID)
realm = p1

六、创建SVN应用的用户及密码
6.1、创建SHA-512加密的密码文件
# 首次创建用户要用 -c5 这个选项。它会创建文件并用SHA-512将口令加密。如果非首次添加用户,请只使用 -5 选项,而不包含初次创建时的 -c。
[svn@testhost ~] htpasswd -c5 /home/svn/repositories/conf/passwd yourusername
New password:
Re-type new password:
Adding password for user yourusername
[svn@testhost ~] htpasswd -5 /home/svn/repositories/conf/passwd anotherusername
New password:
Re-type new password:
Adding password for user anotherusername
6.2、修改用户密码及删除用户(就算用htpasswd -p选项创建了不加密的passwd文件,APACHE也无法识别直接编辑文件来创建的用户和密码)。
# 修改AAA用户密码(与创建新用户命令相同)
htpasswd -5 /home/svn/repositories/conf/passwd AAA
# 删除已有的BBB用户
htpasswd -D /home/svn/repositories/conf/passwd BBB

七、SVN用户权限管理,
vi /home/svn/repositories/conf/authz
[版本库名称:版本库路径]
用户 = 访问权
[groups]
staffs = joe,george
p1users = harry,sally

#未设置权限人员不能阅读版本库
[/]
@staffs = rw
* =

[p1:/]
john = r
@p1users = rw
* =

八、SVN的备份与还原
# 备份版本库
svnadmin dump /path/to/repo > /tmp/repo.dump

# 还原版本库时,先创建库
svnadmin create /path/to/repo
# 导入备份的库文件
svnadmin load /path/to/repo < /tmp/repo.dump
# 设置权限
chown -R svn:svnusers /path/to/repo
chmod -R g+w /path/to/repo/db/

九、访问项目p1 URL
http://IP/p1

https://IP/p1

svn://IP/p1

访问项目p2 URL
svn://IP:3690/p2 (iP地址为你linux的ip,p2为前文创建的版本库名称。3690为svn默认端口,默认端口可以省略不写)