使用自签证书利用浏览器进行HTTPS接口的安全访问

HTTPS的基本工作原理想必对于许多开发者来说是非常熟悉的了,我们一起先回忆一下HTTP常见的八股文中的描述:

  1. 客户端(浏览器)访问 HTTPS 的URL;
  2. 服务器返回 HTTPS 使用的 CA 证书;
  3. 客户端(浏览器)验证 CA 证书是否为合法证书;
  4. 验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;
  5. 发送公钥加密后的随机数给服务器;
  6. 服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);
  7. 服务器把要发送给浏览器的内容,使用随机数进行加密后传输给客户端(浏览器);
  8. 此时客户端(浏览器)可以使用随机数进行解密,获取到服务器的真实传输内容。

大体的过程是这样的,从整个过程中可以看出来,整个流程中涉及到了多个交互过程,主要分为了客户端、浏览器、以及CA之间的交互,还是比较复杂的,尤其是要具体知道每一步骤的其中细节,也是非常多的内容,所以这篇文章不是要去分析每一步的工作机制和原理,这篇文章主要内容是如何使用自签证书完成这一个过程,从而使我们能够进一步的对其有个初步的认识,如果对这其中细节感兴趣的,可以自行学习下,或者可能之后我也会对其进行深入的研究再和大家分享学习。

那么我们回到我们的主题里,首先需要知道CA证书是什么,CA是证书颁发机构(Certificate Authority)的缩写,那么CA证书就是证书机构颁发的一种数字证书,为什么需要这个机构来颁发证书呢?可以理解为就是一个第三方担保机构,这个担保机构保证了在客户端和服务器的通讯阶段的安全,这样客户端只要是看到证书是这个担保机构担保过的,那就会认可这个服务器并和它进行后续交互,反之其他证书都是不合法的,不会进行更进一步的交互了。

其次,这个证书不光是用来证明其合法性,其中还包含了一个公钥,公钥是什么呢?这边就涉及到一些密码学相关知识点了,我们需要先知道非对称加密的一点概念,可以猜出来,有非对称加密那肯定有对称加密,对称加密就是使用同一把密钥进行加密和解密,而非对称加密会用到2个密钥,一把公钥和一把私钥进行加密和解密,公钥会公开出去给客户端,而私钥会保存在本地防止泄漏,所以会更安全,使用这个公钥加密后的数据可以被私钥解开,反过来也是一样的,在上面的HTTPS的连接过程中,1-6步骤所涉及到的就是非对称加解密过程,而后续则会采用对称加密的方式,即使用一个随机数充当了对称加密的密钥进行了通讯,这样一方面是为了提高通讯的效率更重要的是为了保证安全,因为如果还使用原有的公钥和私钥的方式在服务端使用私钥加密,那么只要有公钥的客户端都可以截获服务端发来的信息进行解密,显然这样是不行的。对加密感兴趣的小伙伴可以自行百度看看,这边先不展开了。

知道了概念后,那自签证书的概念就是我们自己充当这个CA机构给自己颁发一个证书,然后想办法让客户端信任这个证书(一般的默认做法是系统会有一个受信任的证书列表,其中就会有存放一些CA机构的根证书),并且证书里面包含了我们的公钥,客户端使用这个公钥进行数据加密,再传输数据,服务端接收并用私钥解开,从而完成整个加解密的通讯过程。那接下来我们就来模拟这样一个通讯过程

首先,我们需要把自己先扮演成CA机构,根据非对称加密的概念,我们需要有一对密钥,对应一把公钥和一把私钥,私钥放在自己身边,公钥提供出去,这边需要注意的是不能把他看成是服务端,CA机构是在客户端和服务端两者之间的一个存在,这边理解了后,我们先来创建一把私钥,可以使用openssl来生成

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl genrsa -out rootca.key 4096
Generating RSA private key, 4096 bit long modulus
................................................................++
...........++
e is 65537 (0x10001)

这样我们就生成了rootca.key的私钥文件,这个私钥是必须要保护好的,不能泄漏,然后我们来生成公钥,这边我们不会直接生成一把公钥对外开放,而是用上面提到的证书,为什么不直接用公钥呢?其实上面已经提到了,因为公钥私钥随便谁都可以生成出来,所以更重要的是要让客户端可以确认到这把公钥是否是受信任的,如果是受信任的才会使用这把公钥去和服务端交互,所以现在来生成一个带公钥的证书,我们可以叫他根证书

生成req请求文件,req请求文件用来生成证书的时候使用,其中包含了一些重要的信息,如证书所有者的一些信息等

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/rootCrt
$ openssl req -new -out rootca.csr -key rootca.key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:sz
Locality Name (eg, city) []:sz
Organization Name (eg, company) [Internet Widgits Pty Ltd]:dobefa
Organizational Unit Name (eg, section) []:it
Common Name (e.g. server FQDN or YOUR name) []:karl
Email Address []:a.karl.com
string is too long, it needs to be less than  64 bytes long
Email Address []:a.karl.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:82468246
An optional company name []:dd

接着我们通过csr和key来生成根证书,会使用到x509工具,这样生成会比较便捷,不会依赖太多的openssl的知识

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl x509 -req -in rootca.csr -out rootca.crt -signkey rootca.key -days 36500
Signature ok
subject=/C=cn/ST=sz/L=sz/O=dobefa/OU=it/CN=karl/emailAddress=a.karl.com
Getting Private key

生成出rootca.crt,这个证书就是CA机构会预先在客户端中的受信任列表中埋下的根证书,其中包括了证书的所有者信息和公钥信息,有了这些信息,客户端就能通过这些信息来验证服务端返回的CA证书的合法性了

然后我们CA机构就可以开张营业了,CA机构会先把自己的证书让客户端放到其受信任的证书列表里,这边的客户端可以是Android系统,可以是Android的APP,也可以是Windows系统,也或者是Windows上的一个浏览器。我们这边先以Windows为例,把我们的CA证书植入进Windows的受信任列表中去,首先打开mmc

在这里插入图片描述

添加删除管理单元

在这里插入图片描述

选证书,添加

在这里插入图片描述

选计算机账户

在这里插入图片描述

本地计算机

在这里插入图片描述

完成后,就可以在列表中看到受信任的证书列表了

在这里插入图片描述

找到刚刚生成的ca根证书

在这里插入图片描述

安装证书,加入受信任列表

在这里插入图片描述

刷新刚刚的证书列表,就可以看到我们刚刚的证书

在这里插入图片描述

完成后,我们的CA机构就可以给别人颁发证书了,当然这边也是给我们自己颁发咯

我们来创建server密钥

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl genrsa -out server.key 4096
Generating RSA private key, 4096 bit long modulus
.........................................................................................................................++
.................................................................................................................................................................................++
e is 65537 (0x10001)

创建请求文件

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:js
Locality Name (eg, city) []:sz
Organization Name (eg, company) [Internet Widgits Pty Ltd]:dobefa
Organizational Unit Name (eg, section) []:it
Common Name (e.g. server FQDN or YOUR name) []:karl server
Email Address []:test.server.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:82468246
An optional company name []:server

使用根证书签发证书

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl x509 -req -in server.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server.crt -days 36500
Signature ok
subject=/C=cn/ST=js/L=sz/O=dobefa/OU=it/CN=karl server/emailAddress=test.server.com
Getting CA Private Key

做完这些步骤我们得到了一个server.crt,这个就是我们服务器的CA证书啦,这个服务端的CA证书是通过CA机构的私钥和CA根证书进行签名得到的,这样做会形成一个证书关联,这样我们就知道了这个服务器证书是出自哪个CA机构的哪张证书的了,我们可以查看下百度的证书会比较清楚,google浏览器为例

在这里插入图片描述

在这里插入图片描述

这个证书有三层的结构,根证书是GlobalSign的根证书,这是一个知名的CA机构,中间证书是GlobalSign使用根证书所生成出来的二级证书,而子证书就是GlobalSign颁发给baidu的CA证书了,大多数的CA证书都是通过二级CA来签发的,如果要实现这种结构的证书签署,会需要额外的一些配置来实现,所以我们这边暂不考虑这种做法,我们这边直接使用根CA进行签发,效果是一样的,这篇文章主要为了学习如何自签一个证书并完成https的交互过程,所以对证书签发感兴趣的同学可以学习更多关于openssl的知识。

接着,我们现在可以来试一下这个证书了,我们用go写一个非常简单的https服务器

package main

import (
	_ "github.com/icattlecoder/godaemon"
	"net/http"

	"github.com/gin-gonic/gin"
)

func setupRouter() *gin.Engine {
	// Disable Console Color
	// gin.DisableConsoleColor()
	r := gin.Default()

	// Ping test
	r.GET("/ping", func(c *gin.Context) {
		c.String(http.StatusOK, "pong")
	})

	return r
}

func main() {
	r := setupRouter()
	// Listen and Server in 0.0.0.0:8080
	r.RunTLS(":8081", "C:\\Users\\Administrator\\Desktop\\crt\\crtDemo\\server.crt", 
		"C:\\Users\\Administrator\\Desktop\\crt\\crtDemo\\server.key")
}

上面我们监听了本地8081端口,并且配置了/ping的接口,这个go程序启动后,访问https://ip地址:8081/ping就会返回pong的text,就这么简单,另外,为了能让这个程序常驻在后台,使用了"github.com/icattlecoder/godaemon"这个库,我们来启动他,在cmd中执行

go run main.go -d=true

然后在浏览器试试访问https://ip地址:8081/ping接口

在这里插入图片描述

啊,报警告了,这说明我们的证书有问题,不过我们已经将根证书埋入我们的系统信任列表中了啊,根据之前的理论,客户端拿着服务端带来的CA证书在本地受信任的CA证书列表中查找,并对比其公钥是否一致,一致则信任,不是吗?我们查看下server证书详细信息,省略部分不关注数据

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl x509 -in rootca.crt -noout -text
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            d9:a5:8c:82:6e:f7:a3:a1
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=cn, ST=sz, L=sz, O=dobefa, OU=it, CN=karl/emailAddress=a.karl.com
        Validity
            Not Before: Jan 28 07:46:36 2022 GMT
            Not After : Jan  4 07:46:36 2122 GMT
        Subject: C=cn, ST=sz, L=sz, O=dobefa, OU=it, CN=karl/emailAddress=a.karl.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    .......
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         ......

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl x509 -in server.crt -noout -text
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            fe:52:f8:e2:bf:78:1d:60
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=cn, ST=sz, L=sz, O=dobefa, OU=it, CN=karl/emailAddress=a.karl.com
        Validity
            Not Before: Jan 29 09:35:55 2022 GMT
            Not After : Jan  5 09:35:55 2122 GMT
        Subject: C=cn, ST=js, L=sz, O=dobefa, OU=it, CN=karl server/emailAddress=test.server.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    .......
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         .......

可以看到上面的server.crt证书的Issuer为rootca,是一致的

再来查看下rootca证书公钥和server证书的公钥

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/rootCrt
$ openssl x509 -in root2.crt -pubkey
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHRS1rCHo/DeXWQHvxHclhAkBT
as6VVbVFzf/tVjNHUsabKVnW6P+/ASQj+AoGgX+cjvX+6V44NcavJw8juokFrJki
MOZvt8wiY/kjsvMAZ8d1xTYYw0huUjMftFjemKJq7y6QFKrz+nqsJrsj1ThfFpfI
S3CAvnFMr9JtF+Uu8QIDAQAB
-----END PUBLIC KEY-----
................

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/rootCrt
$ openssl x509 -in root3.crt -pubkey
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHRS1rCHo/DeXWQHvxHclhAkBT
as6VVbVFzf/tVjNHUsabKVnW6P+/ASQj+AoGgX+cjvX+6V44NcavJw8juokFrJki
MOZvt8wiY/kjsvMAZ8d1xTYYw0huUjMftFjemKJq7y6QFKrz+nqsJrsj1ThfFpfI
S3CAvnFMr9JtF+Uu8QIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
................

发现也是一样的,那么还有哪边会有问题呢,我们看了google的提示信息,然后不妨看看百度的证书

在这里插入图片描述

这边有个重要的信息,即使用者可选名称,里面配置了好多DNS Name,还有通配符,而我们的证书是没有的,这就是关键了,其他的参数没有暂时还不影响我们的证书,所以我们来看看如何添加这个到我们的证书中

这个字段我们查到其对应的是“Subject Alternative Name”这个扩展字段,还记得我们在签发服务器证书的时候,使用的x509模块,该模块支持-extensions和-extfile来配置一个扩展字段,我们先建立一个配置文件ssl.cnf文件,内容如下

[ req_ext ]
subjectAltName = @alt_names

[alt_names]
IP.1    = 10.0.10.22
#DNS.1   = your-website.dev
#DNS.2   = another-website.dev

因为我们是使用的IP访问的,所以我们添加了一个IP.1 = 10.0.10.22的alt name

然后执行签发命令,带上配置文件

Administrator@PC-20210427XPHC MINGW64 ~/Desktop/crt/crtDemo
$ openssl x509 -req -in server.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out server.crt -days 36500 -extensions req_ext -extfile ssl.cnf
Signature ok
subject=/C=cn/ST=js/L=sz/O=dobefa/OU=it/CN=karl server/emailAddress=test.server.com
Getting CA Private Key

确认一下我们的新的证书

$ openssl x509 -in server.crt -noout -text                                      Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            fe:52:f8:e2:bf:78:1d:61
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=cn, ST=sz, L=sz, O=dobefa, OU=it, CN=karl/emailAddress=a.karl.com
        Validity
            Not Before: Jan 30 03:27:04 2022 GMT
            Not After : Jan  6 03:27:04 2122 GMT
        Subject: C=cn, ST=js, L=sz, O=dobefa, OU=it, CN=karl server/emailAddress=test.server.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    .........
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                IP Address:10.0.10.22
    Signature Algorithm: sha256WithRSAEncryption
         ....................

可以看到X509v3 extensions: X509v3 Subject Alternative Name: IP Address:10.0.10.22已经配置到证书里面了,我们部署到go服务上,再来访问下浏览器试试吧

使用

taskkill /f /t /im main.exe

来关闭服务器进程,然后重新启动go服务,访问接口

在这里插入图片描述

这样就成功了,我们的证书已经被浏览器信任了。

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
酷睿股票私募网站管理系统,是国内首家采用WAP手机及电脑WEB同步访问的股票私募系统,该系统基于ASP DIV CSS AJAX XML MSSQL技术专门为股票私募网站开发的一款CMS网站管理系统,是一个经过完善设计并适用于各种服务器环境的易用、安全、高效、快速、优秀的网站解决方案。后台管理方便、易懂、易用、人性化,对操作人员技术要求低,没有建站知识的操作人员都可轻松进行。继续ASP开源之路,稳定、安全、强大的核心程序,对于有网站设计知识和程序爱好者可以随心所欲进行修改,方便建立具有自已特色的站点。   酷睿股票私募网站管理系统,最大的优势不仅在于有全国首创的WAP手机访问系统,更有数十款精美模板任意选择及终身免费更换模板服务,并承诺一次购买终身免费使用,无任何限制和加密,完全可随意的二次开发,也可以随意更换域名、空间、IP等,可终身免费无限次升级更新新版本,还可以一套系统无限次使用。 升级更新部份功能介绍 全新的金色模板设计 全新的内核程序设计 全新的后台管理界面设计 全新的会员中性管理界面设计 新增了后台基本设置里的网站、联系信息、银行设置、工商注册、公司证书、收费标准等五个大项,50多个小项的设置及后台相关标签 新增了会员注册后只要完善自己的资料便可自动签订合同功能 新增了公开验证模型 新增了会员实战模型 新增了历史战绩模型等四种模型,去掉原来两个系统调用,改为一个系统 新增了会员实战的自动更新功能 新增了历史战绩的自动更新功能 新增了后台定时任务文章多点定时自动采集和自动多点定时生成静态页面功能 新增了后台设置前台会员注册时允许所显示的会员组如A、B、C、D、E、F等类会员组 新增了会员登陆后的领料专业区链接 新增了目录安全设置说明文件 修改了后台所有静态自定义标签可以可视化编辑 修正了幻灯图片不能后台添加修改的问题 修正了财经视频直播视频不能播放的问题 修改滚动行情不能自动更新并改为全球主要股指自动实时更新 增强后台木马在线检测系统 修正了黑客利用后台或会员上传功能上传木马的BUG 修正了黑客利用模板管理添加木马文件的BUG 修正了其它数处BUG及安全隐患 修复了已经的几处WAP手机访问系统的BUG 修正了Robots.txt搜索引擎蜘蛛文件对网站的收录权限,让搜索引擎更新收录网站内容 并取消了首页的数个IFRA使用网站的ME调用,尽可能增加了对搜索引擎的友好程度 删除了上百个垃圾文件使用网站的减小40% 优化了大量的程序代码 主要功能 完善的全后台管理功能 不管是网站配置、联系信息、银行设置、工商注册、公司证书、收费标准还是网站模板、标签等几乎可以在后台管理任何网站所需要的内容。 实时行情系统 滚动全球行情、外汇报价、机构看盘、涨跌排行、成交排行、股市指南、环球指数全自动更新。 运行速度与效率 采用XML缓存,运行速度更快,效率更高。 系统采用ASP DIV CSS Ajax XML MSSQL技术开发而成,运行速度成倍提升。 文章智能快速采集系统 多点定时计划文章采集和多点定时计划文章自动生成系统,让你的网站无人职守,自动更新 智能强大的过滤系统设置、UTF-8/GB2312自动识别、批量采集让你享受高速采集快感。 采集目标网站可随意更换,设置规则简单,操作更方便 会员实战自动更新功能 可自动更新沪深股市当天涨幅最前的各三名作为会员实战内容 历史战绩自动更新功能 可自动更新以会员实战的15天前及120内的内容作为历史战绩的内容,并自动将实际获利自动设置为40%-90%、自动将交易时间设置为3-9天 全新的文章浏览权限应用功能 真正的做到了会员领料专区的会员组浏览功能,可将会员组浏览权限精确到每个频道/每个栏目/每篇文章,让不同的会员组享受不同的文章浏览权限,并各会员组之间的资料不能想到浏览,也可将每篇文章设置浏览点数,发行点卡让包点的会员进行浏览,还可设置包月会员浏览,包月会员时间一到该会员需要续费后才能浏览相应的会员资料。 强大的会员管理功能 无限用户组添加功能、站内短信功能、会员点券明细查询、有效期查询、资金明细查询、点卡在线充值功能、在线支付实时到帐,会员可设置为扣点会员、有效期会员和、无限期会员。 SEO优化 在线智能生成GOOGLE/百度标准收录XML格式地图,使网站更易于搜索和收录。 三种运行模式:可将站点全部页面高为动态、静态及伪态格式,大大提高浏览速度及搜索引擎的搜录量。 HTML生成文件存放结构选择。 独有利于Alexa收录的info.txt文件和搜索引擎蜘蛛爬行文件Robots.txt 模板程序分离,网站频道、栏目、内容页META关键词、网站META网页描述均为调用标签,利于网站的收录量并大大缩短了页面收录的时间更便于网站的自动配置管理 WAP手机网站系统 国内独创WAP手机访问系统,注册、登录、会员领料、分析预测众等多种功能一部手机全部搞定!支持手机自带WAP浏览器、UC浏览器、QQ浏览器等几乎所有只要能上网的主流手机浏览器 手机上网浏览与在网站同步,一个帐号,两站通用,实现WEB与WAP无缝衔接 集成13个在线支付平台 集成:财付通 网银在线 易付通 云网支付 支付宝 快钱支付 中国在线支付网 西部支付 上海环迅等11个在线支付平台接口,会员充值实时到帐,让你收费无忧。 强大的插件管理 集成:WAP手机网站系统插件、数据库导入系统、可选CC视频联盟插件、WSS统计插件、 标签管理系统 全新的标签应用功能全站采用标签调用系统,让网站运行速度更快,且完全防止站内的文章被其它网站所采集,后台标签管理更方便简单,让网站更安全且极易维护管理。 模板化体系 界面和程序分离,可在线可视化编辑、设计,所有模块均通过标签调用,集成类同Macromedia Dreamweaver一样简单的可视模板编辑方式,修改模板容易、快捷。 无限频道添加功能 可无限添加各种频道或栏目,新频道或栏目完全独立设置,独立模版。 数据库 提供强大的数据备份和恢复功能,可以在线备份、恢复、压缩数据库。查看系统空间占用情况、系统初始化、查看服务器信息及到在线直接执行SQL语句 系统采用MSSQL数据库,可支持上数千万的数据库,更安全、更稳定、更高效、更强大,运行速度更快。 自动签合同功能 当会注册成功了系统会自动生成一个文件形式的合同,进入会员中心后可以查看合同文本。 系统安全 本以安全为基础,密码采用MD5加密,保证用户资料安全,程序代码中设计周密,可自动屏蔽恶意攻击代码。 更集成防SQL注入程序,从而可全面防止各种SQL注入攻击手段,并进行记录在案,保证了系统的安全和稳定运行。 更详细的管理事件记录,管理员每一步后台操作都记录在案。 双重登陆双重密码设计再加认证码,后台登陆更安全
个性化,网速快,可登录合为一体 Google公司出版的浏览器,超好用 软件概述 Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。 Chrome Android Chrome Android Google Chrome的特点是简洁、快速。GoogleChrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。 另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,是手机浏览器的一次巨大突破。随着Android系统的份额不断扩大而市场占有率不断飙升。 ·Chrome浏览器基于开源引擎WebKit、Blink,其中包含谷歌Gears。 ·Chrome提供了浏览器扩展框架,可以制作与Adobe-AIR类似的混合应用。 ·包含V8 Javascript虚拟机,这个多线程的虚拟机可以加速Javascript的执行。 ·具备隐私浏览模式,可以让用户无需在本地机器上登录即可使用,这个功能与微软IE8中的Incognito类似。 ·浏览器将内置防止“网络钓鱼“及恶意软件功能。 Google曾在自己的官方博客中宣布在Beta版Chrome25 中将加入网络语音API(Web SpeechAPI),让用户在某些嵌入了JavaScript的网页中可以更方便地使用语音指令、听写等功能。同时新版本在内容安全策略标头(Content Security Policy header)方面也有所改进,开发者可以创建网页、资源白名单,以此来提升浏览器安全性。 软件名称 Google Chrome浏览器 Google Chrome浏览器 Google Chrome,又称谷歌浏览器,是一个由Google(谷歌)公司开发的免费网页浏览器。“Chrome”是化学元素“铬”的英文名称;过去也用Chrome称呼浏览器的外框。本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)。 软件优点 不易崩溃  最新版Google Chrome 最新版Google Chrome Chrome最大的亮点就是其多进程架构,保护浏览器不会因恶意网页和应用软件而崩溃。每个标签、窗口和插件都在各自的环境中运行,因此一个站点出了问题不会影响打开其它站点。通过将每个站点和应用软件限制在一个封闭的环境中这种架构,这进一步提高了系统的安全性。 速度快 使用WebKit引擎。WebKit简易小巧,并能有效率的运用存储器,对新开发者来说相当容易上手。Chrome具有DNS预先截取功能。当浏览网页时,“Google Chrome”可查询或预先截取网页上所有链接的IP地址。目标网页。Chrome具有GPU硬件加速:当激活GPU硬件加速时,使用“Google Chrome”浏览那些含有大量图片之网站时可以更快渲染完成并使页面滚动时不会出现图像破裂的问题。 2013年4月份,Google宣布称将为Chrome浏览器开发新的自主浏览器引擎Blink,在最新的Chrome开发版本中,Blink已经正式现身。 [7] 几乎隐身 说Chrome的界面简洁不足以说明其简洁程度。Chrome几乎不像是一款应用软件,屏幕的绝大多数空间都被用于显示用户访问的站点,屏幕上不会显示Chrome的按钮和标志。Chrome的设计人员表示,他们希望用户忘记自己在使用一款浏览器软件,他们的目标基本上实现了。 搜索简单 Chrome的标志性功能之一是Omnibox--位于浏览器顶部的一款通用工具条。用户可 以在Omnibox中输入网站地址或搜索关键字,或者同时输入这两者,Chrome会自动执行用户希望的操作。Omnibox能够了解用户的偏好,例如, 如果一名用户喜欢使用PCWorld网站的搜索功能,一旦用户访问该站点,Chrome会记得PCWorld网站有自己的搜索框,并让用户选择是 否使用该站点的搜索功能。如果用户选择使用PCWorld网站的搜索功能,系统将自动执行搜索操作。 标签灵活 Chrome为标签式浏览提供了新功能。用户可以“抓住”一个标签,并将它拖放到单独的窗口中。用户可以在一个窗口中整合多个标签。Chrome在启动时可以使用用户喜欢的某个标签的配置,其它浏览器需要第三方插件才能够提供这一功能。 更加安全 黑名单(Blacklists):“Google Chrome”会定期地更新防止网络钓鱼和恶意软件的黑名单,并在用户试图浏览可能造成电脑损害的网站时予以警告。这项服务也可通过使用其他的免费自由应用程序接口(API)“GoogleSafe Browsing API” 来取得。在更新维护这些黑名单的同时,Google也会通知被列入的网站,以避免网站持有者本身不知道网站存有恶意软件。 沙箱(Sandboxing):“Google Chrome”中的每一个标签页都是一个沙箱(sandbox),以防止“恶意软件破坏用户系统”或“利用标签页影响其他标签页”。遵守最小权限原则,每个动作的权限都会被限制,仅能运算而无法写入文件和从敏感区域读取文件(如我的文档、桌面)。沙盒小组(Sandbox Team)是一种表示他们“使用了现有的运行程序限制,并让这些限制变成一座监狱”,例如在其中一个标签页运作的恶意软件,将无法窃取信用卡号码、干扰鼠标运作,或告诉系统在启动时运行某个程序,并且恶意软件会在标签页关闭时立即中止。 插件(Plugins):插件通常并没有统一的标准,且无法像标签页般沙盒化。这些通常需要运行在浏览器本身的安全等级或更高的等级。为了降低被攻击的风险,插件是独立运行的。从5.0版本起,“Google Chrome”内置Adobe Flash Player以确保使用的为最新版本降低被攻击的风险。其后在9.0版本将Flash播放器内置在沙盒中独立运行。这项技术是Chrome安全性进步的一座里程碑。对Windows XP用户特别重要,因为它是平台上唯一提供Flash嵌入沙盒运行的浏览器。从8.0版本起,“Google Chrome”内置在沙盒中独立运行的PDF阅读器。 多进程(Multiprocessing):能容许多个程序同时运行而互不影响,每个网页标签独立于窗口程序存在,当资源过高或崩溃时,不会因为一个停顿而整个程序当掉。 任务管理器(Task Manager):非常有特色的工具,用户可以查看哪些网站占用了最多的内存、下载流量和CPU资源,有利于管理各个标签页与插件,也便于用户终止恶意操作。 诈骗和恶意程序保护:当“Google Chrome”侦测到浏览网站可能有害时,便会发出实时警告。浏览器会将造访网址的一部分传送给Google,以了解该网址是否列在诈骗与恶意网站清单中。(网络钓鱼及恶意软件的侦测功能)。 自动更新(Auto-updates):为确保受到最新版安全性更新的保护,“Google Chrome”会定期检查更新,以确保更新永远为最新版本。更新检查可确保会使用最新版的安全性功能与修正程序,浏览器自动更新新的版本,不需要用户采取任何动作,更新后会在下一次启动中自动使用。 专业测评 HTML5测试 HTML5测试(3张) CSS3测评 Acid1及Acid2均顺利通过。 早先,在Acid3中只能获得78分,最新的测试版已达到100分,部分WebKit核心浏览器已取得100分通过。 CSS3 Selectors Test中578项全部通过。 HTML5测评 支持W3C最新WEB协议HTML5且表现良好支持HTML5视频编号格式有 H.264 OggTheora WebM 版本发布编辑 2015年8月21日正式版(44.0.2403.157)发布 [1] 1. 修复了部分网页加载缓慢的问题 2015年8月11日正式版(44.0.2403.155)发布 1、 关于内部审计的各种修正、模糊测试和其他措施等;   2、改善运行速度、安全性、稳定性以及硬件兼容性;   3、大幅提升 64 位版 Chrome 的安全性;   4、增强 64 位版 Chrome 稳定性,渲染器处理崩溃率大大降低;   5、内置组件 Adobe Flash Player 更新至 v18.0.0.232正式版; 2015年4月15日正式版(42.0.2311.90)发布 [8] 1、内置Adobe Flash Player已更新至17.0.0.169   2、新增海量应用扩展和Web平台API   3、大幅提升软件性能和稳定性   4、Chrome 42 正式停止对NPAPI插件的支持,现在默认安装仅支持5款PPAPI插件   5、向“生命、宇宙以及万事终极答案”致敬!(根据道格拉斯·亚当斯的小说《银河系漫游指南》,42是“生命、宇宙以及任何事情的终极答案”。因此,42这个数字也经常被用来向这一作品致敬) 2014年9月3日下午正式版(37.0.2062.103)发布 [9] 该版本首发于9月3日下午,更新编号为37.0.2062.119(平台版本为5978.80.0/5978.81.0)。 新增加的特性有: 1、多用户登录支持(Multi Sign),多账户切换更便捷; 2、Chrome启动器中已可查看应用信息(App Info); 3、设置(Setting)窗口不再出现在新标签页中; 4、隐身模式(Incognito Mode)新增“保存到Google Drive”功能; 5、可通过chrome.enterprise.platformKeys API使用客户端证书管理器(Client Certificate Management); 6、签管理(Managed Bookmarks)--推送和管理你的签; 7、新增加密码管理工具。 2014年1月14日 正式版(32.0.1700.76)发布 Chrome 32.0.1700.76包含以下几个bug修复和体验提升: 1、在音频、视频、摄像头等标签上展示对应的图标; 2、Win8 Metro模式的新形象; 3、自动阻止恶意软件; 4、提供一些新的app或扩展的API; 5、更多高级功能。 2013年12月5日 正式版(31.0.1650.63)发布 Chrome 31.0.1650.63包含15个安全修复,例如同步会话的302定向、v8缓冲区溢出、模态对话框中的地址栏欺诈…… Chrome 31支持Web支付,在用户的授权下,Web开发人员可以通过程序调用浏览器的自动填充数据。这样,在支付时,用户可以直接选择存储在浏览器上的数据,或者通过一个浏览器界面来输入新的支付信息,然后开发人员再继续他们现有的支付流程。 Chrome 31还新增了便携式本机客户端(PNaCl,Portable Native Client),可以让开发者一劳永逸,只需一次编译就能在任何硬件平台上运行。 2013年10月16日Chrome 30正式版(30.0.1599.101)发布: 修复了5个安全漏洞以及一些之前版本存在的Bug,完善了浏览器性能。 2013年8月20日Chrome 29正式版(Chrome 29.0.1547.57)发布: 1、基于你曾经访问的站点对 Omnibox 建议进行改进;   2、可以重置个人 Profile 到之前的状态;   3、很多新的应用和扩展API;   4、大量稳定性和性能的提升;   5、安全相关问题修复。 2013年7月10日Chrome 28新版特性: 1、使用Blink内核; 2、开始支持通知中心服务。 2013
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡爾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值