比较老的版本可以用:set noautoindent
或:set noai
。
较新的版本可以用:set paste
进入粘贴状态,粘贴完之后用:set nopaste
恢复。
比较老的版本可以用:set noautoindent
或:set noai
。
较新的版本可以用:set paste
进入粘贴状态,粘贴完之后用:set nopaste
恢复。
编辑/etc/vim/vimrc,添加
set mouse=
set ttymouse=
RewriteEngine On
# RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301,NE,QSA]
如Server绑定多个域名,需要针对实际请求的主机名重定向,可以把%{SERVER_NAME}
替换成%{HTTP_HOST}
。
rewrite ^ https://$host$request_uri permanent;
也可以直接使用return
语句
return 301 https://$host$request_uri;
更改ulimit配置文件是不起作用的,需要修改service单元文件:
[Service]
LimitNOFILE=8192
有效的Limit选项可以运行man 5 systemd.exec
查看。
LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=,
LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=,
LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=,
LimitRTTIME=
These settings control various resource limits for executed
processes. See setrlimit(2) for details. Use the string infinity to
configure no limit on a specific resource.
https://serverfault.com/questions/649577/how-can-i-permanently-set-ulimit-n-8192-in-centos-7#answer-720596
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files#sect-Managing_Services_with_systemd-Unit_File_Create
https://access.redhat.com/solutions/1257953
本文只讨论使用RSA算法的x509证书。本文在撰写时使用特定版本的openssl,但大部分情况下也应该适用于其它版本。
$ openssl version
OpenSSL 1.1.0f 25 May 2017
生成自签名证书可分为使用基本步骤和快捷步骤。快捷步骤只是通过特殊选项合并基本步骤中的一步或两步。通过openssl生成的文件默认都是PEM格式,可直接用于apache或nginx。如使用IIS需要在生成后转换为pfx格式。
生成自签名证书的基本步骤如下:
– 生成私钥(Private Key)文件
– 生成证书(签名)请求文件CSR,需要使用私钥
– 生成自签名证书(Certificate)文件,需要使用证书请求文件
RSA私钥中也包含公钥。命令为openssl genrsa,格式:
openssl genrsa [<options>] <bit-length>
[-des3 | -aes128 | ...] #指定用于保护私钥的对称加密算法
[-passout pass:<password> | -passout file:<path-name> | -passout env:<variable> | -passout fd:<file-descriptor> | -passout stdin] #指定输出私钥的加密密码来源
-out <private-key-file> #输出私钥到文件,不指定则输出到stdout
举例,生成一个长度为2048位的RSA私钥(含公钥):
openssl genrsa -out ca.key 2048
举例,生成一个长度为2048位,并用aes128加密的私钥,密码为1234:
openssl genrsa -aes128 -passout pass:1234 -out ca-pass.key
命令为openssl req,格式:
openssl req
-new #生成新的证书签名请求
-key <private-key> #在步骤1中生成的私钥
[-passin pass:<password> | -passin file:<path-name> | -passin env:<variable> | -passin fd:<file-descriptor> | -passin stdin] #指定所用私钥的密码
-subj '/C=<country>/ST=<province>/L=<locality>/O=<organiation>/OU=<organiation-unit>/CN=<common-name>/emailAddress=<email>'
-out <csr-file> #输出证书请求到文件,不指定则输出到stdout
选项-subj指定证书所有人主体信息,如果证书用于网站,则其中的CN域必须指定为网站域名,其他域不是必填项。
举例,为www.mysite.com生成证书签名请求:
openssl req -new -key ca.key -subj '/C=CN/ST=ZheJiang/L=HangZhou/O=CompanyName/OU=DepartmentName/CN=www.mysite.com' -out mysite.csr
举例,为www.mysite.com生成证书签名请求,同时指定之前生成私钥时所用密码:
openssl req -new -key ca-pass.key -passin pass:1234 -subj '/C=CN/ST=ZheJiang/L=HangZhou/O=CompanyName/OU=DepartmentName/CN=www.mysite.com' -out mysite.csr
步骤3有两种命令可以实现,分别是openssl req -x509和openssl x509 -req。有一点小区别是前者使用-key指定私钥,后者用-signkey指定私钥。
命令openssl req格式
openssl req
-x509 #生成自签名证书,而不是证书请求
-days <days> #指定证书有效期天数
-md2 | -md5 | -sha1 | -sha256 | -sha512 #签名所用哈希算法
-key <private-key-file>
-in <csr-file>
-out <certificate-file>
举例,为证书请求文件签名并生成证书:
openssl req -x509 -days 365 -sha256 -key ca.key -in mysite.csr -out mysite.crt
命令openssl x509格式:
openssl x509
-req #输入内容为证书请求,而不是证书
-days <days> #指定证书有效期天数
-md2 | -md5 | -sha1 | -sha256 | -sha512 #签名所用哈希算法
-signkey <private-key-file>
-in <csr-file>
-out <certificate-file> #输出证书到文件,不指定则输出到stdout
举例,为证书请求文件签名并生成证书:
openssl x509 -req -days 365 -sha256 -signkey ca.key -in mysite.csr -out mysite.crt
此方法似乎不会读取/etc下的openssl.cnf的设置(不同发行版路径不同,使用find /etc/ -name openssl.cnf查找),如果在其中有设置subjectAltName不会起作用。
可以合并基本步骤中的一步或两步,来减少命令输入量。快捷步骤总是以基本步骤2(openssl req)为基础,通过增加额外的选项来合并其它步骤。
如果还未生成私钥,可以在基本步骤2的命令openssl req的基础上,用-newkey代替-key,来指明生成证书请求的同时生成私钥。与私钥有关的基本步骤1中的选项便可以同时出现。
-newkey <type:length> #指定私钥类型及长度,如rsa:2048
-keyout <private-key-file>
-nodes #不要为私钥使用对称密钥加密,相当于基本步骤1中不指定加密算法
举例,使用一条命令生成私钥和证书签名请求:
openssl req -new -newkey rsa:2048 -keyout ca.key -passout pass:1234 -subj '/C=CN/ST=ZheJiang/L=HangZhou/O=CompanyName/OU=DepartmentName/CN=www.mysite.com' -out mysite.csr
其中-passout来自于基本步骤1中的选项。
如果已经有了私钥,也可以合并基本步骤2,3,来直接生成证书,而跳过证书请求。在基本步骤2的命令openssl req的基础上,用-x509代替-new:
-x509 #生成自签名证书,而不是证书请求
相当于把基本步骤2(openssl req)和基本步骤3方法1(openssl req -x509)合并起来。
举例,利用已有私钥,通过一条命令来生成自签名证书:
openssl req -new -x509 -key ca.key -subj '/C=CN/ST=ZheJiang/L=HangZhou/O=CompanyName/OU=DepartmentName/CN=www.mysite.com' -days 365 -sha256 -out mysite.crt
如果要同时生成私钥和自签名证书,也可以用一条命令完成,只要把合并步骤1,2及合并步骤2,3的选项放在一起便可。
举例,通过一条命令生成私钥和自签名证书
openssl req -x509 -newkey rsa:2048 -keyout ca.key -nodes -subj '/C=CN/ST=ZheJiang/L=HangZhou/O=CompanyName/OU=DepartmentName/CN=www.mysite.com' -days 365 -sha256 -out mysite.crt
可以通过基本步骤1产生的私钥和基本步骤3产生的证书来重新生成证书请求文件,而无须重新指明主体信息。
在使用自签名证书的情形下作用不大,但如果曾经把证书请求提供给第三方进行过签名,那么通过此方法可以快速重新生成证书请求文件,从而再次申请签名。
命令为openssl x509 -x509toreq,格式:
-x509toreq #将x509证书转换为证书请求
-signkey <private-key-file>
-in <certificate-file>
-out <csr-file> #输出证书请求到文件,不指定则输出到stdout
举例,通过私钥和证书,生成证书请求文件:
openssl x509 -x509toreq -signkey ca.key -in mysite.crt -out mysite.csr
查看信息的共有选项如下,不再单独列出:
-text #解析原始内容,以可理解的方式输出信息
-noout #不输出原始内容
[-passin pass:<password> | -passin file:<path-name> | -passin env:<variable> | -passin fd:<file-descriptor> | -passin stdin]
-in <input-file> #指定输入内容的来源
-out <output-file> #指定输出到文件,不指定则输出到stdout
使用openssl rsa命令,举例:
openssl rsa -text -noout -in ca.key
使用openssl req命令,举例:
openssl req -text -noout -in mysite.csr
使用openssl x509命令,举例:
openssl x509 -text -noout -in mysite.crt
解决方案与原因详见:https://stackoverflow.com/questions/31506158/running-openssl-from-a-bash-script-on-windows-subject-does-not-start-with
https://segmentfault.com/a/1190000008605135
https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/
https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs(5)
Fatal error: Certificate verification: Not trusted
设置:
set ssl:verify-certificate no
dpkg-reconfigure console-setup
运行seahorse,删除左侧的keyring,重启Chrome,然后保持空密码并确认两次。