0%

随着web的发展,开发者对传输过程中的信息安全也应该更为重视。https可以通过ssl协议来保证信息传输过程中的数据安全,成为了一些敏感操作的必备选择。

什么是https

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,也被称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。(来源:维基百科)

https证书的获取

由于可信的证书颁发机构只有那么几家,所以必须要从他们那里获取或者购买。我的https证书是从腾讯云那里免费获取的,毕竟刚毕业没钱(网址:https://console.qcloud.com/ssl)。通过之后下载下来就可以了。

nginx上启用https

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {                                                                      
listen 443 ssl;
server_name www.****.com;#域名
ssl_certificate ssl_certs/1_www.****.com_cert.crt;#证书路径
ssl_certificate_key ssl_certs/2_www.****.com.key;#key路径

ssl_session_cache shared:SSL:1m; #s储存SSL会话的缓存类型和大小
ssl_session_timeout 5m; #会话过期时间
ssl_ciphers HIGH:!aNULL:!MD5; #为建立安全连接,服务器所允许的密码格式列表
ssl_prefer_server_ciphers on; #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码

location / {
root /var/www/;
index index.html index.htm index.php;
}

location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

http访问自动跳转到https

1
2
3
4
server{                                                     
listen 80 www.****.com;
rewrite ^/(.*)$ https://www.****.com/$1 permanent;
}

遇到问题

在linux-mint下安装完 Nginx 后,当然要支持php才能真正工作。可是尝试了很久都没有成功(以前很容易就成功了),原来是 php-fpm 支持方式发生了变化,我以前用的方法早已经过时了。 

详细过程

Nginx 无论是用apt方式还是用编译方式都不麻烦,所以直接记录 php-fpm 的配置。按照以前的思想,php-fpm 工作在127.0.0.1:9000端口上,我直接配置后却出现了502 Bad GateWay页面。查看nginx日志文件,发现错误是无法连接到本机9000端口。于是查找 php-fpm.conf,在其兄弟文件夹 pool.d 下发现 www.conf,关键一句打开是这样的listen = /var/run/php5-fpm.sock,通过查阅资料得知php-fpm有两种工作方式,一种是利用tcp,另一种直接使用socket,socket的方式会更快。因此,nginx下的配置fastcgi_pass 127.0.0.1:9000;的方式显然不支持 socket 方式。所以,只需要将其更改为fastcgi_pass unix:/var/run/php5-fpm.sock;以后,Nginx 就可以正常工作了。

支持 ThinkPHP

对 ThinkPHP 的支持其实主要是对 .htaccess 文件的支持,主要是为了去掉 index.php。实现有两种方式,其中一种是直接引入include $path/.htaccess,另一种是修改location / {},但是 Apache 和 Nginx 的 .htaccess 文件语法不同,在 Nginx 下正确的配置是

1
2
3
4
5
6
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

其他

  • 多站点支持可以连续写也可以各自写在相应的server.conf中。

  • 多域名和子域名配置时支持连写server_name [[www.adc.com](http://www.adc.com)]([http://www.adc.com](http://www.adc.com)) lol.adc.com也支持通配符*.adc.com

使用linux有一段时间了,最近在服务器上假设了一个git仓库,每次提交时都使用密码实在是比较反人类,因此就特意研究了一下如何使用ssh密钥来登录服务器。

公钥和私钥的生成

ssh-keygen命令专门是用来生成密钥的。该命令有很多选项,这里列出了最基本的四个:

  • -t 用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1);
  • -P 用来指定密语
  • -f 用来指定生成的密钥文件名
  • -C 用来添加注释

ssh-keygen -t rsa -P 123456 -f host -C 'my host key'意思就是新建了密语为123456注释为my host key文件名为host的密钥。此命令会生成hosthost.pub两个文件,前者为私钥文件,后者为公钥文件。如果你想免密登录的话,请将密语设置为空。

将公钥部署到服务器

上一步生成了公钥和私钥后,需要将公钥部署到服务器并用私钥登录。因此首先需要将创建的公钥上传到服务器。使用scp或者你的工具将公钥上传到服务器并将文件内容追加到~/.ssh/authorized_keys中。例如:

1
2
3
4
5
6
#在本机上执行此命令,上传公钥
scp -P your_port host.pub user@hostname:/tmp
#在服务器上执行此命令,追加到authorized_keys
cd /tmp && cat host.pub >> ~/.ssh/authorized_keys
#更改权限
chmod 600 ~/.ssh/authorized_keys

更改服务器配置

打开/etc/ssd/sshd_config文件,将如下的配置打开:

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

重启sshdservice sshd restart或者systemctl restart sshd.service。重启之后,服务器已经支持远程ssh连接了

连接服务器

本人是通过ssh命令来远程连接服务器的,通过ssh -p your_port username@domain -i your_private_certification命令,就可以连接到服务器了。如果你是通过xshell或者putty来连接的话,导入你的私钥并连接就可以了。

其他

如果你想只允许服务器通过公钥和私钥的方式来连接服务器的话,可以将服务器配置文件/etc/ssh/sshd_config中的PasswordAuthentication yes改为PasswordAuthentication No,不过在重启sshd时不要关闭当前的连接,确认通过私钥能连接到服务器才可以关闭。否则,一旦私钥连不上,密码连接方式又被禁用了,恐怕你就要告别你的服务器了。

立冬倏忽而至,忽觉四季变换,岁月轮回。

彼年此时,初雪已至;今处南国,才被寒衣。

不闻秋之萧萧意,不见雁之南返痕。

无触目则无惊心,感时节方伤流年。

既惊于光阴飞逝,更忧于马齿徒增。

菁华塞于慵惫,宏图纸上谈兵。

仰怍于天,俯怍于地。

每念及此,岂不大汗涔涔?

斯年已逝,夫复何言。

来者尚可追,莫待明日悲今日。

丙申年冬月廿一日

颍川陈某

窗外和风斜阳,盎然春意;霞光流转,新绿扑人。

日子就是日子,倏忽而逝。

刹那间,此间已是公元2017年4月18日。

从公元1994年2月12日数起,这是第8466天,也就是二十三年又两个月零六天。

人生苦短,“寄蜉蝣于天地,渺沧海之一粟”,每次算起时间来。我都会悚然心惊,不敢再算。

“冯唐易老,李广难封”,王勃的抱负也不过是在纸面上,除了文章,一无所成。

“念腰间剑,匣中剑,空埃蠹,竟何成,时易失,心徒壮,岁将零”,而我,真正的一无所成。

常来思考我究竟要做什么,我要“成”什么,竟然茫然无所知,这才是最大的遗憾呢。

最近总是在想,那些取得巨大成就的人,无非是家室好或者天赋好,也就是东坡那句“古之成大事者,不惟有超世之才,亦必有坚韧不拔之志”中的“超世之才”,却忘了这世界上确实也存在着那些天赋平常、家境也一般的英雄。

我不知道我有什么天赋异禀,更不可能会有什么富商巨贾的家室,我唯一能控制的,仅仅是我自己而已。

喜欢什么,热爱什么,就去做,就去做好,坚持不懈。

也许像高斯、欧几里得那样的卓绝不可得,但是像钱锺书、纪昀那样的学富五车也不是不可能。

生命毕竟还长,抓住它,千万别让它轻易溜走。它溜走了,你就再也抓不住它了。

只有你还在这里,你就是光,别让他轻易黯淡。生命褪了色,谈什么多彩人生。