gitlab安装后出现了默认的证书无效的问题(这可能是安装过程中发生错误导致的),这使得chrome无法向指定的站点发起请求。

可以通过以下两种方式来解决。

临时解决方案

如果你使用的是chrome浏览器,则可以在发生错误的页面上任意点击左键,然后在键盘上输入thisisunsafe,此时便会打开网站。

注意:这并不一个好的方法。开启该选项后,所有的https的证书验证都将失效。如果你只是临时用一用,用完后需要重新启动浏览器,并点击链接左侧的安全设置后点击:启用安全报告。

永久解决方案

永久的方案当然是更新证书,免费的证书的申请方式有很多,在此不阐述。比如我是由阿里云申请的,在下载的列表中会有很多项,比如:iss\apache\tomcat\nginx等。接着我们下载对应的私钥文件及数字签名证书即可。
比如我们下载apache对应的key文件以及crt文件。其中:

  1. key文件则是服务器用到的私钥,这个文件只能服务器用,不能扩散。
  2. crt文件在用户访问时,同返回的内容一并返回给用户。

有了这两个文件,就有了https加密传输的基础。可以这么简单来理解:

  1. key文件是服务器用来加密、解密的。
  2. crt文件是客户用来加密、解密的。

我们将上述两个文件下载后,对应替换gitlab的证书配置文件即可,位置是:/etc/gitlab/ssl,步骤如下:

  1. 备份原keycrt文件。
  2. 将下载到的keycrt文件改为原keycrt文件.
  3. 执行:sudo gitlab-ctl restart

此时,再次访问gitlab的站点便可以顺利打开了。

加密传输

在加密领域,有两种基本的典型的加密解密算法:

  1. 第一种是加密和解密的密钥相同的AES算法。该算法的优点是加密、解密速度快。缺点是加密与解密密钥相同。我们又把这种算法称为对称加密算法。
  2. 第二种是加密和解密的密钥不相同的RSA算法。简单来讲就是用123加密的内容需要用456来解密,而用456加密的内容则需要使用123来解密。该算法的优点是保密性强,缺点是加密解密速度慢。我们把这种加密与解密的密钥不相同的算法又称为非对称算法。

https则聪明地结合了两种算法(其实前阵子那个流行的勒索病毒也是结合了AES和RSA)。

  1. 在数据加密解密过程中使用AES算法。
  2. 在传输AES算法使用的密钥时使用RSA算法。

RSA算法中,我们把保留的那个密钥称为私钥,该密码仅被签发者掌握;而把那个用来发送给别人的密钥称为公钥,公钥可以被任意多的用户掌握。而且一个私钥可以对应无限多个公钥。

如果你对AESRSA算法还不是太了解,请先学习这两种算法的基础。

同时为了防止数据在中途被劫持,发生替换的风险,https传输又引入了根证书签发机构。最后它整体的传输过程大概是这样的:

  1. 服务端向 CA 签发机构来申请证书。
  2. CA 将加密后的公钥以及未加密的私钥给服务端。
  3. 客户端进行加密请求(以https:打头请求站点)
  4. 服务端返回CA 签发的公钥
  5. 客户端检查 CA 签发的公钥的有效性。
  6. 客户端通过 CA 签发的公钥来获取服务器端的公钥
  7. 客户端随机生一个AES密钥,并将AES密钥通过服务端公钥进行加密后传递给服务端
  8. 服务端通过私钥对客户端传入的加密后的数据进行解密,然后得到AES密钥
  9. 客户端与服务端使用共同的AES密钥进行快乐、快速的通讯。

简单画个图,大概长这样:
数字签名+证书.png


潘杰
3.1k 声望238 粉丝