squid用户登录验证密码正确却无法登录的解决办法

博主在配置squid代理服务器的时候,遇到一个问题,就是加上了用户验证的配置后,输入正确的密码死活登录不上,倒腾半天后终于发现症结所在,在此分享出来,希望各位不要再进这个坑,下面上菜:

博主是用htpasswd添加的用户,相信会看这个博客的应该会知道这是什么,如果这都不知道的话,请不用往下看了

htpasswd添加用户的命令是:

/路径/htpassed -cd 用户名 密码

参数说明:

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码,即明文密码
-D 删除指定的用户

关键点来了,因为是linux系统,所以一定要指定-d,使用crypt加密,否则就算密码输入正确也无法识别,到此,问题解决。

郑重承诺,博主所写内容皆为博主原创,请尊重博主的版权和成果,转载请注明出处

squid配置https代理的方法,亲测可用!

博主在配置好squid后,皆大欢喜的翻墙的时候,忽然发现gooogle.com,youtube.com等https的链接无法打开,只能打开http的网站,譬如bbc.com之类的,在网上找了好多帖子,翻了无数文档之后,发现网上很多帖子还是很靠谱的,只是自己的操作没有对才苦苦浪费了很多时间,二话不说,上图:

youtube

在开始大餐之前先注意这几个问题:

1,浏览器的代理设置一定要注意,尤其是使用火狐的小伙伴们,火狐有个设定如图:

火狐配置

这里http代理下面有一个SSL代理,千万不要坑在这儿了,这个的端口写的和http代理的端口一样就行了,千万不要写https的端口(也就是https_port的端口),不然https链接死活连接不上。

2,一定要有CA证书,之前一直没有搞懂这个有什么用,这才是连上https的关键所在,这儿简要说一说这个东西:

①这个东西可以自己制作,当然也可以给专门的证书机构制作,但是我相信既然都来自己配置代理服务器了,相信各位不会舍得掏这一大笔钱(一大笔!!!),所以就自己制作吧。开始之前先说一说证书制作的步骤:标准的证书制作一般会生成三个文件,一般为私钥文件(key),证书申请文件(csr),相当于一份申请书,给证书颁发机构的,自己制作证书的话就不用了,毕竟自己就是颁发机构也就不用申请了,还有一个就是生成的证书(crt).。

3,一定要有openssl工具哟,没有的话装上再看下一步,这都不会的话不用看下去了。

好了,正式上菜:

1,制作私钥:

openssl genrsa -des3 -out /etc/squid/server.key 1024

执行过程中都会输入一个密码来保护私钥,牢记,以后会使用,这会在目录/etc/squid下生成一个server.key的密钥。

2,生成申请文件,如果想自己做证书的话,省略这一步:

openssl req -new -key /etc/squid/server.key -out /etc/squid/server.csr

填写相应的内容,既是你的申请内容,里面是你的相应信息,就像申请表一类的东西。完成后发给证书颁发机构,交钱(一大笔钱!!!),然后给你证书。

3,制作证书,我的是有效期10年的证书

openssl req -new -x509 -nodes -sha1 -days 3650 -key /etc/squid/server.key -out /etc/squid/server.crt

这里面会填写一些证书的信息,其中有一项是:Common Name,证书公用名,这里应该是主机的全称例如www.dengxn.com,因为这是一台代理服务器,不在域中,所以可以填myhost。

由于前面密钥有密码,所以导致每次重启服务都会要求输入密码,嫌麻烦的话这里可以把密码去掉:

openssl rsa -in /etc/squid/server.key -out /etc/squid/server.key

4,配置squid

https_port 443 key=/etc/squid/server.key cert=/etc/squid/server.crt

重启squid服务:service squid restart

或者重新加载squid配置文件:squid -k reconfigure

完毕!!!

有些浏览器可能会提醒证书不信任之类的,不用担心,毕竟是自己的代理服务器。如果真的想完全屏蔽掉这种不安全的提醒的话,那就自己制作根证书,然后再制作证书,然后把根证书导入到浏览器,就不会有这种提醒了,根证书的制作方法可以参照这为哥们儿的http://blog.csdn.net/tiandyoin/article/details/37880457

导入根证书的方法我就不说了,找度娘,我就懒得打字了,如果有同僚遇到问题,欢迎留言,博主尽量一一回复(妹子优先)

郑重承诺,博主所写内容结尾博主原创,请尊重博主的版权和成果,转载请注明出处

=====================================================

2017/3/24更新:

按照上述方法配置好之后,确实能够正常上网了,可是一段时间后,你会发现,很不稳定,有时候能上,有时候连不上,原因在于,你被墙了。没错,虽然https是加密的,但http的报头是不会被加密的,时间长了,依然会被墙,所以想要一直畅通无睹的翻墙,你需要一个神器,stunnel,这个东西提供了一个加密隧道,因此你需要在服务端和客户端都装这个东西,然后代理所有的http/https请求,把它们加密,发送到服务端,到达服务端后再把请求转发给stunnel,从而避免被GFW检测到http报头被屏蔽,至于具体的配置方法,网上一大把,我就不copy+paste了,如果解决不了的,欢迎留言评论或者email给我