2022年8月

这里简单说明一下在Windows系统下开发SpringCloud项目所需要的的基本环境,这里只说明开发过程中基础必须的软件,其他扩展功能(Docker,k8s,MinIO,XXL-JOB,EKL,Keepalived,Nginx,RabbitMQ,Kafka等)用到的软件会在具体使用时详细说明,本地开发的环境软件以Windows版本的安装配置为例,数据库等中间件以Linux(CentOS7)的安装配置为例,其他系统Mac/Linux可自行配置。



后端开发需要准备的环境及软件有:JDK 1.8+,Maven 3.6.3+,Mysql 5.7.11+,Redis 5.0+,Nacos 1.4.0+,Sentinel 1.8.0+,IntelliJ IDEA 2020.2.1



前端开发需要准备的环境及软件有:Node.js 15.9.0+,npm/cnpm/yarn,Visual Studio Code



实际上环境软件可以使用Docker安装,更加简单方便,如果说自己为了更详细地了解各项配置及安装原理,还是通过软件包一步步安装配置(这里暂不深入讨论数据库、消息中间件等应不应该使用Docker安装的问题),以下为详细安装操作步骤,不是小白请略过...



后端开发所需环境及软件安装步骤:



一、安装JDK



2019年4月16日,Oracle发布了Oracle JDK的8u211和8u 212两个版本(属于JDK8系列),并从这两个版本开始将JDK的授权许可从BCL换成了OTN,也就是从这两个版本开始商用收费。当然,个人开发和测试并不会收费,那么商用环境我们可以有两个选择: 下载之前的版本(2019年1月15日发布的Oracle JDK 8u201和8u202)进行使用或者选择使用OpenJDK。目前我们一般的做法是在本地开发环境使用Oracle JDK ,在测试环境和正式环境中使用OpenJDK。为了保持使用的特性一致,需选择合适的版本。



我们这里在开发过程中选择使用Oracke JDK, Oracle JDK官网下载选择页面已标注好8u211后面的版本和8u202之前的版本方便下载,下载地址 :
https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html



Oracle JDK官网下载页面



1. 选择JDK免费版进行下载,根据自己合适的Windows系统版本下载,我这里选择Windows x64版本,提前做好Oracke JDK网站的系统注册和登录,否则在下载过程中会提示登录,选择下载页面:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html



Oracle JDK下载页



2. 双击下载的Oracle JDK进行安装,根据提示一步步地点击下一步即可:



安装1



安装2



安装3



安装4



安装5



安装6



3. 配置环境变量:



在系统环境变量中添加JAVA_HOME和 CLASSPATH,并将JAVA的bin目录加入到path中



环境变量1



环境变量2



4. 验证是否安装配置成功:



运行 -> cmd命令窗口,在命令行中输入:java -version,下面出现版本信息说明安装配置成功。



Java版本信息



二、安装Maven



我们的SpringCloud项目使用Maven进行构建和依赖管理,Maven 的 Snapshot 版本与 Release 版本:1、Snapshot 版本代表不稳定、尚处于开发中的版本;2、Release 版本则代表稳定的版本。Gradle 作为构建工具最近几年也比流行,和Maven比较各有优缺点吧,如果说哪一个比较好,这个仁者见仁智者见智,我们这里仍选择Maven进行项目构建。



1. 下载安装:



Maven需要JDK的支持,我们这里选择最新的Manven版本3.6.3,需要JDK1.7以上的支持,JDK的安装以及配置在上面我们已经完成。 下载Maven的zip包,下载地址:
https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip



Maven下载页



2. 配置环境:



在系统环境变量中添加 M2_HOME 和 MAVEN_HOME,最后在PATH中添加Maven的bin目录: %MAVEN_HOME%\bin



M2_HOME 和 MAVEN_HOME



path



3. 验证是否安装配置成功:



运行 -> cmd命令窗口,在命令行中输入:mvn -version ,如下图所示,展示版本信息说明安装配置成功。



Maven版本信息



4. 注册阿里云私服并获取私服仓库地址:



我们可以选择安装Nexus作为Maven仓库管理器,也可以使用阿里云提供的Maven私服,配置方式都是一样的,这里我们选择使用阿里云的Maven私服(
https://maven.aliyun.com/mvn/guide),如果是企业使用,这里建议申请私有仓库:



阿里Maven仓库



私有仓库



私有仓库地址



5、配置Maven私服地址和本地仓库路径,请按下面的注释进行替换为自己的私有仓库信息。



Maven配置



三、安装Mysql



这里介绍在CentOS7上通过安装通用预编译包方式安装MySql数据库:



1. 增加用户名和用户组 :



#groupadd mysql#useradd -r -g mysql mysql ---新建msyql 用户禁止登录shell



2. 下载、解压MySQL通用编译包:



#wget ftp://ftp.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz#cd /usr/local/ ---切换到存放源码包所在目录(这里也是安装目录)#tar -xvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz ---在当前目录解压通用编译包#ln -s /usr/local/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz mysql ---建立软链接mysql 方便操作



3. 设置权限并初始化MySQL系统授权表:



#cd mysql ---进入软链接目录#mkdir /usr/local/mysql/data ---新建数据目录#chmod 770 /usr/local/mysql/data ---更改data目录权限为770#chown -R mysql. ---更改所有者,注意是mysql.#chgrp -R mysql. ---更改所属组,注意是mysql.#bin/mysqld —initialize -user=mysql -basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ---以root 初始化操作时要加--user=mysql参数,生成一个随机的密码(保存登录时使用)#chown -R root. ---更改所有者,注意是root.#chown -R mysql /usr/local/mysql/data ---更改data目录所有者为mysql



4. 创建配置文件并后台启动MySQL



# mv/etc/my.cnf /etc/my.cnf.bak ---my.cnf 改名或删除(默认的my.cnf 会影响mysql 启动)#cd /usr/local/mysql/support-files ---进入MySQL 安装目录支持文件目录#cp my-default.cnf/etc/my.cnf ---复制模板为新的配置文件,根据需要修改文件中配置选 项如不修改配置MySQL则按默认配置参数运行。#/usr/local/mysql/bin/mysqld_safe --user=mysql & ---后台启动mysql



5. 配置MySQL自动启动



#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql ---复制启动文件#chmod 755 /etc/init.d/mysql ---增加执行权限#chkconfig -add mysql ---加入自动启动项#chkconfig --level 345 mysql on ---设置MySQL 在345 等级自动启动 ***把服务文件放到/etc/init.d/目录下面相当于改为了rpm包安装的服务使用方式。



6. 配置MySQL系统环境变量



#vi /etc/profile ---编辑/etc/profile文件在最后添加如下两行:PATH=/usr/local/mysql/bin:$PATHexport PATH ---不加登录mysql 时会报错“-bash: mysql: command not found”#source /etc/profile ---使环境变量及时生效



7. 启动MySQL服务



#/usr/local/mysql/support-files/mysql.server start ---启动mysql服务#/usr/local/mysql/support-files/mysql.server restart ---重启mysql#/usr/local/mysql/support-files/mysql.server stop ---停止mysql服务



也可以用service mysql start或systemctl start mysql这样的rpm服务命令,还可以使用绝对路径/etc/init.d/mysql start来启动mysql,因为上面已经把启动方式改为了rpm服务启动方式。



8. 访问MySQL数据库



#mysql -u root-p ---连接mysql,输入初始化时生成的密码mysql> alter user 'root^'localhost' identified by '123456'; ---修改root 新密码mysql> quit; ---退出也可用exit;# mysql -u root -p ---提示输入密码时输入新设置的密码登录mysql>use mysql; ---访问数据库mysqlmysql>GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; ---创建可以远程链接的用户



9. 创建SSL/RSA文件



#cd /usr/local/mysql/bin ---切换目录#mysql_ssl_rsa_setup -user=mysql -basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ---创建新的SSL文件



10. MySQL默认区分大小写,需要修改配置文件使其不区分大小写



在/etc/my.cnf中的[mysqld]后加入下面一行,并重启MySQL



lower_case_table_names=1



11、常见问题及解决方式:



a、登录时报错



#myslq -u root -p报错: ERROR 1045 (28000):Access denied for user 'root'local host' (using password: NO)---(不输入密码时)ERROR 1045 (28000):Access denied for user ,root,@,localhost, (using password: YES)---(输入密码时)



解决方式:



#/etc/init.d/mysql stop ---停止mysql 服务#mysqld_safe -skip-grant-tables -skip-networking & ---跳过权限表控制,跳过TCP/IP 协议在本机访问#mysql -u root -p mysql ---提示输入密码时直接到 7 丨(mysql>update user set authentication_string=password('123456,) where user='root'; --修改密码,在 MySQL5.7.9中密码字段名是authentication_string 而不是原来的password 了。mysql> flush privileges; ---刷新MySQL的系统权限相关表使其生效mysql> quit; ---退出mysql#/etc/init.d/mysqld restart ---重启mysql 服务



b、访问数据库时报错



#myslq -u root -p ---提示输入密码时输入新设置的密码mysql>use mysql;报错: ERROR 1820 (HY000): You must SET PASSWORD before executing this statement



解决方式:



mysql>alteruseruser() identifiedby '123456'; ---再重新设置下密码,注意方法与之前5.6版本的“SET PASSWORD = PASSWORD('new_password'}/MH



c、启动MySQL服务报错



#systemctl start mysql报错: Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).



初始化没有指定路径参数造成的加上参数即可#cd /usr/local/mysql#bin/mysqld -initialize-user=mysql -basedir=/usr/local/mysql -datadir=/usr/local/mysql/data



d、使用druid作为数据库连接池时,密码加密(找到maven目录下的druid包)



java -cp druid-1.0.14.jar com.alibaba.druid.filter.config.ConfigTools you_password



四、安装Redis



下面是在CentOS7中安装Redis的操作步骤,在命令行执行以下命令:



1. 下载并解压Redis安装包



wget http://download.redis.io/releases/redis-5.0.5.tar.gzcd /opt/software/tar zxf redis-5.0.5.tar.gz -C /usr/local/src



2. 编译并安装Redis



cd /usr/local/src/redis-5.0.5make && make installln -s /usr/local/src/redis-5.0.5 /usr/local/redis



3. 修改Redis配置文件



vi /usr/local/redis/redis.conf#修改内容如下:daemonize yes #开启后台运行timeout 120 #超时时间bind 0.0.0.0 #任何地址IP都可以登录redisrequirepass 123456 #redis密码123456



4. 启动Redis



cd /usr/local/redis/src./redis-server /usr/local/redis/redis.conf



5. 测试安装配置是否成功



redis-cli -h 127.0.0.1 -p 6379 -a 123456127.0.0.1:6379> KEYS * (empty list or set)127.0.0.1:6379> set user rayOK127.0.0.1:6379> KEYS *1) "user"



常见问题:



redis不能远程连接时,可能是防火墙的问题,关闭防火墙或者开放对应的redis端口即可



五、安装Nacos



Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。



1. Nacos发布地址:
https://github.com/alibaba/nacos/releases,从里面选择需要的版本,这里选择1.4.0版本,下载地址为:https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz。



Nacos发布地址



2. 下载完成后,上传到测试Linux服务器解压。(如果只想本地windows安装,可以下载nacos-server-1.4.0.zip,解压后使用方法基本一致)



[root@localhost soft_home]# cd nacos[root@localhost nacos]# lsnacos-server-1.4.0.tar.gz[root@localhost nacos]# tar -zxvf nacos-server-1.4.0.tar.gznacos/LICENSEnacos/NOTICEnacos/target/nacos-server.jarnacos/conf/nacos/conf/schema.sqlnacos/conf/nacos-mysql.sqlnacos/conf/application.properties.examplenacos/conf/nacos-logback.xmlnacos/conf/cluster.conf.examplenacos/conf/application.propertiesnacos/bin/startup.shnacos/bin/startup.cmdnacos/bin/shutdown.shnacos/bin/shutdown.cmd[root@localhost nacos]# lsnacos nacos-server-1.4.0.tar.gz[root@localhost nacos]# cd nacos[root@localhost nacos]# lsbin conf LICENSE NOTICE target[root@localhost nacos]# cd bin[root@localhost bin]# lsshutdown.cmd shutdown.sh startup.cmd startup.sh[root@localhost bin]# pwd/usr/local/nacos/nacos/bin[root@localhost bin]#



3. 修改配置文件的数据库连接,修改为自己实际的数据



#*************** Config Module Related Configurations ***************#### If use MySQL as datasource:spring.datasource.platform=mysql### Count of DB:db.num=1### Connect URL of DB:db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=nacosdb.password=nacos



4. 在数据库中刷入/nacos/conf目录下的nacos-mysql.sql数据库脚本,如果需要其他配置或者了解使用方式可以访问官网,官网地址:
https://nacos.io/zh-cn/docs/quick-start.html。



5. 进入到bin目录下直接执行sh startup.sh -m standalone。



[root@localhost bin]# sh startup.sh -m standalone/usr/java/jdk1.8.0_77/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/nacos/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Djava.ext.dirs=/usr/java/jdk1.8.0_77/jre/lib/ext:/usr/java/jdk1.8.0_77/lib/ext -Xloggc:/usr/local/nacos/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/usr/local/nacos/nacos/plugins/health,/usr/local/nacos/nacos/plugins/cmdb -Dnacos.home=/usr/local/nacos/nacos -jar /usr/local/nacos/nacos/target/nacos-server.jar --spring.config.location=file:/usr/local/nacos/nacos/conf/,classpath:/,classpath:/config/,file:./,file:./config/ --logging.config=/usr/local/nacos/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288nacos is starting with clusternacos is starting,you can check the /usr/local/nacos/nacos/logs/start.out



6、服务启动之后,可以访问http://ip:8848/nacos访问管理后台,默认用户名密码:nacos/nacos



Nacos登录页



Nacos首页



六、安装Sentinel



1. 下载Sentinel发布版本,下载地址:
https://github.com/alibaba/Sentinel/releases



2. 将下载的jar包
sentinel-dashboard-1.8.0.jar上传到CentOS7服务器,Sentinel 是一个标准的 Spring Boot 应用,以 Spring Boot 的方式运行 jar 包即可,执行启动命令



nohup java -Dserver.port=8086 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar >/dev/null &



3、在浏览器输入测试的http://ip:8086 即可访问登录界面,默认用户名密码为sentinel/sentinel



Sentinel登录页



4、至此,一个简单的Sentinel就部署成功了,其他更详细功能及使用方式请参考:
https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D



七、安装IntelliJ IDEA



后台Java代码我们使用目前最流行的IntelliJ IDEA进行开发



1. 下载需要的安装包,IntelliJ IDEA下载:
https://www.jetbrains.com/idea/,双击安装,一直点击下一步,尽量修改一下安装目录,不要安装在C盘即可。



安装第一步



安装第二步



安装第三步



安装第四步



2. 想办法获取到注册码,可以私信我免费获取



3. 配置默认的Maven和JDK路径



Settings



IDEA默认会读取到系统配置的JDK环境变量,具体项目可通过File -> Project Structure进行配置。



4. 通过插件中心,安装Lombok,MybatisX, Save Actions, Eclipse Code Formatter插件,后面会详细介绍几款插件的用法:



插件安装



前端开发所需环境及软件安装步骤:



一、安装Node.js



如果是刚接触Vue的话,建议学习一下
https://juejin.cn/post/6844903476661583880系列文章,介绍得很详细,虽然ElementUI已经不更新了,但是这位前端大神写的文档比AntDesignVue文档高好几个层级,AntDesignVue适合掌握一定Vue能力的人去使用学习。



1. Node.js下载地址:
https://nodejs.org/en/download/releases/



Node.js下载页



2. 双击安装包,一步步点击下一步即可



3. 检查是否安装成功



运行 -> cmd命令窗口 ,在命令行中输入 node -v ,显示node版本信息表示安装成功



查看版本



4. npm切换阿里源



命令行中执行如下命令



npm config set registry https://registry.npm.taobao.org/



5. 安装cnpm



npm install -g cnpm --registry=https://registry.npm.taobao.org



6. 安装yarn



npm install -g yarnyarn config set registry `https://registry.npm.taobao.org -g`



这里之所以cnpm和yarn都安装,是因为其各有优缺点,在使用的时候选择自己习惯的即可。



二、安装VSCode



Visual Studio Code (简称 **VSCode** / **VSC**) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。



1. 下载合适的VSCode安装包,下载地址:
https://code.visualstudio.com/Download



VSCode下载页



2. 我们这里选择的是.zip解压版,下载解压后就可使用。



3. 安装插件,打开VSCode,点击左侧下面的扩展按钮,选择需要的插件进行安装



汉化插件: Chinese (Simplified) Language Pack for Visual Studio Code



代码检查/格式化工具: ESLint



Html/js/css进行格式化对齐显示: Beautify



Vue开发工具 : Vetur



4. 配置ESLint自动检测格式化前端代码



在我们使用的前端框架中,已经生成eslint 相关的配置文件.eslintignore和.eslintrc.js,当我们编辑代码保存时,ESlint插件会将我们的代码自动按照配置好的格式进行格式化,这里介绍在VSCode中如何配置使用Eslint。



修改VSCode配置,文件->首选项->设置,在设置页,点击右上角第一个按钮,打开setting.json,修改内容为:



{//保存自动格式化"editor.formatOnSave": true,//autoFixedOnSave 设置已废弃,采用如下新的设置"editor.codeActionsOnSave": {"source.fixAll.eslint": true},//.vue文件template格式化支持,并使用js-beautify-html插件"vetur.format.defaultFormatter.html": "js-beautify-html",// js-beautify-html格式化配置,属性强制换行"vetur.format.defaultFormatterOptions": {"js-beautify-html": {"wrap_attributes": "force-aligned"}},//后面不添加逗号"vetur.format.defaultFormatter.js": "vscode-typescript",//方法后面加空格"javascript.format.insertSpaceBeforeFunctionParenthesis": true,"files.autoSave": "off","eslint.format.enable": true,//autoFix默认开启,只需输入字符串数组即可"eslint.validate": ["javascript","javascriptreact","vue","html","vue-html"],"eslint.run": "onSave"}



以上基本开发环境配置操作完成,接下来就可以进行编码开发了。


不知道小伙伴注意到没有,不知不觉中,我们常用的网站都已经采用了HTTPS加密;Chrome把HTTP网站标记为不安全,Apple要求所有IOS App全部采用HTTPS加密。那么本期我们就来介绍一下HTTPS。


01

HTTPS介绍



要介绍HTTPS,先得说一下HTTP。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP 协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,于是,诞生了HTTPS。简单来说HTTPS是HTTP的安全版,是使用 TLS/SSL 加密的 HTTP 协议。TLS/SSL 具有身份验证、信息加密和完整性校验的功能。

02

TLS介绍




TLS(Transport Layer Security,安全传输层),TLS是建立在传输层TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。

我们一起来回顾一下SSL/TLS的发展历程:

SSL 1.0  版本从未公开过,因为存在严重的安全漏洞。

1995年:SSL 2.0 版本在1995年2月发布,但因为存在数个严重的安全漏洞而被3.0版本替代。

1996年:SSL 3.0  写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。SSL 3.0的漏洞允许攻击者发起降级攻击。

1999年:TLS 1.0  互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。

2006年:TLS 1.1  作为 RFC 4346 发布。主要修复了CBC模式相关的如BEAST攻击等漏洞。

2008年:TLS 1.2  作为 RFC 5246 发布 。提供现代加密算法(AEAD),增进安全性,目前主要使用的版本。

2018年:TLS 1.3  作为 RFC 8446 发布。,支持0-rtt,大幅增进安全性,砍掉了AEAD之外的加密方式。

目前通过wireshark抓包,可以看到,使用的都是 TLS 1.2,同时window服务器应该禁用默认的 SSL 2.0 和 SSL 3.0 只启用 TLS 1.2 保证安全。



03

HTTPS就绝对安全了吗

HTTPS就绝对安全了吗,也不是,下面说一种攻击方式--中间人攻击:



你以为你在跟服务器通信,其实不是……

在我们测试工作中,会用fiddler或者burpsuite抓取https包,利用的就是中间人攻击这个原理。

以后有机会再介绍如何抓取HTTPS包。




作者:测试之心
链接:https://www.jianshu.com/p/7422a96ecdf8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


.net项目,http升级为https,分为两种情况:1.有域名 2.无域名,网站通过ip访问


有域名

大多数网站是这种情况,通过域名访问系统,有域名就可以去腾讯云或者其他云平台申请经过CA认证的SSL证书,这样的证书配置后,在浏览器的地址前面显示该网站是安全的




1.证书的申请

Tomcat配置SSL证书实现https


2.证书部署

SSL 证书 IIS 服务器 SSL 证书安装部署


3.防火墙开通端口

如果有新增端口,需要在防火墙中开通对新端口的访问,如果没有开通新的端口,则无需操作。


没有域名

没有域名的网站,可以通过使用java JDK内置的Keytool工具创建证书。


创建的证书再转换成IIS服务器支持的数字证书,该方式生成的证书也叫自签名证书,这类证书部署后网站会提示不安全,如下图所示:




操作操作步骤:


1.下载java JDK

文件下载地址:


javajkd1.8.0-Java文档类资源-CSDN下载


2.在jdk的bin目录打开命令窗口



3.生成密钥

在命令行窗口中输入下面命令,生成密钥


keytool -genkeypair -alias sw -dname cn=192.168.7.2 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 36500 -storepass 123456 -storetype PKCS12 -keypass 123456 -keystore H:\sw.keystore




以上命令执行后,会在电脑的H盘下生成 sw.keystore 文件(根据个人电脑的实际盘符选择生成密钥的位置)。 


下面是对命令中参数的说明: 


alias:证书的别名,可根据项目名来设定;


dname:证书的使用者签名,这里写入的是:cn=192.168.7.2,表示使用者名称是IP为192.168.7.2的服务器;


keyalg:密钥算法,有:RSA、DSA、DE,这里设置为RSA;


keysize:密钥长度,这里设置为2048;


sigalg:签名算法,当密钥算法设为RSA时,可以设置的签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA,这里设置为:SHA256withRSA ;


validity:证书有效天数;


storepass :密钥库密码;


storetype :密钥库类型,这里设置为 PKCS12 ;


keypass :密钥密码,尽量与密钥库密码保持一致;


keystore :密钥库名称,可以是绝对路径。


也可以使用命令行查看各参数含义:




4. 将sw.keystore 转换成 pfx 格式文件

keytool -importkeystore -srckeystore H:\sw.keystore -destkeystore H:\sw.pfx -srcstoretype JKS -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456




下面是对命令中参数的说明: 


srckeystore :源密钥库路径,这里的设置值与步骤3中的keystore对应;


destkeystore :目标密钥库路径,目标证书库文件的后缀名要设置为pfx;


srcstoretype :源密钥库类型,设置为JKS;


deststoretype :目标密钥库类型,设置为PKCS12;


srcstorepass :源密钥库密码,这里的设置值与步骤3中的storepass对应;


deststorepass :目标密钥库密码,尽量与源密钥库密码保持一致。


5.证书部署

SSL 证书 IIS 服务器 SSL 证书安装部署


6.防火墙开通端口

如果有新增端口,需要在防火墙中开通对新端口的访问,如果没有开通新的端口,则无需操作。

————————————————

版权声明:本文为CSDN博主「梁萌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/liangmengbk/article/details/124377128


一、HTTP和HTTPS的基本概念

HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:安全套接字层超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer)。是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和SSL支持使用X.509数字认证,用户可以确认发送者是谁,它的主要作用有两种:1、建立一个信息安全的通道,来保证数据传输的安全;2、确认网站的真实性。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据加密传输,网景公司设计了SSL(Sercure Socket Layer)协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。具体的区别如下:

1、HTTPS更安全:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议的信息明文传输安全;
2、HTTPS需要申请证书:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费,费用大概与.com域名差不多,每年需要大约几十元的费用。而常见的HTTP协议则没有这一项;
3、端口不同:HTTP使用的是大家最常见的80端口,而HTTPS连接使用的是443端口;
4、安全性不同:HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全;

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

image

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。

四、http切换到HTTPS

如果需要将网站从http切换到https到底该如何实现呢?
这里需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。例如:http://www.baidu.com改为https://www.baidu.com
  BTW,这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。例如:将http://www.baidu.com改为//www.baidu.com。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

再来看一下https协议:

我们都知道HTTP并非是安全传输,而HTTPS是相对安全的,在传输数据之前,需要客户端和服务进行一次握手,在握手过程中确立双方加密传输数据的密码信息,然后在后续通信过程中就使用协商密钥进行对称加密通信。具体过程见下图:

image

1)客户端发起HTTPS请求

即用户在浏览器里输入一个https网址连接到服务器端口。

2)服务端初步响应

采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥,可以想象成一把钥匙和一个锁头,只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。将证书发回给浏览器,证书包含证书的颁发机构、过期时间等。

3)客户端解析证书

客户端首先会验证证书是否有效,比如颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致、过期时间等,如果发现异常,则提示证书存在问题,如果证书没有问题,那么客户端就生成一个随机值,然后用证书对该随机值进行加密。

4)客户端发送加密信息

客户端发送的是用证书加密后的随机值。

5) 服务器解密信息

服务端用私钥解密后,得到了客户端传过来的随机值,然后把内容通过该值进行对称加密(所谓对称加密就是将信息和私钥通过某种算法混合在一起)。

6)服务器发送加密后的信息

服务器发送的是服务端用随机值进行对称加密后的信息。

7) 客户端解密信息

客户端用之前生成的随机值解密服务端传过来的信息,客户端就获取了解密后的内容。

五、HTTPS的优点

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

六、HTTPS的缺点

虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。



作者:凌云01
链接:https://www.jianshu.com/p/d0b6e69b27b7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


当这些年来HTTP已经“足够好”时,为什么要切换到HTTPS?开关和开关的成本是否值得花时间和精力?是什么让HTTPS比HTTP更可靠?为什么要购买SSL证书?好吧,当我们比较这两种协议并向您展示https的好处时,您会得到答案。



HTTPS提供额外的安全性



顾名思义,HTTPS比HTTP安全得多。SSL/TLS证书可帮助您保护在您的网站和客户端之间传输的数据。当数据通过互联网传输时,它会在到达最终目的地之前在许多服务器之间反弹。网络犯罪分子有很多机会来破坏它。



如果您使用的证书可以验证您的身份,它还可以保证您网站的真实性,以便用户知道他们可以相信他们的数据是安全的。这也可以帮助您使您的网站从冒名顶替(网络钓鱼)网站中脱颖而出。



HTTPS帮助您的网站避免显示丑陋的“不安全”消息



正如我们之前提到的,没有人喜欢在网站上看到警告信息,这些信息会大喊“这个网站是安全的——快跑!”但这基本上是当您在网站上使用不安全的HTTP协议而不是安全的HTTPS协议时发生的情况。



当您尝试打开HTTP网站时,Chrome中显示的“不安全”警告消息的屏幕截图。



“不安全”显然表明两个设备之间的连接不安全。这意味着任何查看连接的人都可以轻松查看正在传输的内容,包括登录凭据、社会保险号和信用卡号。



HTTP通过80端口发送数据,而HTTPS通过443端口发送数据。HTTP只运行在应用层,而HTTPS运行在传输层,使用PKI技术和流程。这些技术差异是使HTTP网站“不安全”的安全协议的一部分。



HTTPS通过身份增加信任



当您网站的访问者用挂锁阅读您网站上的“HTTPS”时,他将能够相信与您网站的连接是安全的,并且没有人能够拦截它。正如我们刚才提到的,如果大多数消费者在他们的屏幕上看到“HTTP”和“不安全”警告,他们将不会从您的网站购买。他们为什么要这样做?在您的网站上显示该消息表明您显然不关心他们的安全!



吸引消费者的最有效方法之一是保证其数据的安全性。但是安全和安全是有区别的。使用加密来保护数据是一回事,但如果用户不知道谁在另一端接收他们的数据,这对用户没有任何好处。这就是为什么您的组织的数字身份很重要。



拥有电子商务业务与经营实体店有很大不同。当您在网上开展业务时,您不一定了解您的客户个人——更重要的是,他们并不了解您。因此,在某些方面,这些交易是在两个陌生人之间进行的。在这种情况下,信誉良好且值得信赖的第三方有必要向用户(及其Web客户端/浏览器)保证您是真正的企业主,拥有良好的声誉并且值得信赖。



帮助人们了解他们真正在与谁交谈的最佳方法是通过可验证的方式确认您的身份。这就是使用OV或EV证书真正派上用场的地方。在CA可以颁发SSL/TLS证书之前,他们必须花费数天时间检查您的业务以确保它是合法的。这需要将网站所有者提供的信息与各种官方第三方来源进行比较,并使用其他验证方法。只有当他们确定您的业务合法时,他们才会为您的网站颁发证书。



HTTPS提高您网站的Google搜索引擎排名



在搜索引擎上排名对任何网站都至关重要。当访问者在搜索引擎上输入查询时,搜索引擎将使用许多不同的因素对网站进行排名。根据SearchEngineJournal报告,Google搜索中的第一个自然搜索结果的点击率最高,为28.5%。第二个和第三个结果的比率分别为15%和11%,而第10个结果则暴跌至区区2.5%。



因此,您应该尽一切努力提高您的搜索引擎排名。在您的网站地址之前拥有SSL证书和HTTPS是您可以实现该目标的方法。



拥有HTTPS可以保护您免受PCI/DSS处罚



支付卡行业数据安全标准(PCIDSS)是一项信息安全标准,通过任何主要信用卡接受付款的企业都必须遵守该标准。如果您不遵守协议,那么您可能会受到处罚,并面临Visa、MasterCard和AmericanExpress等信用卡公司的巨额罚款。



下图取自PCI安全标准指南。要求提供信用卡持有人数据的网站必须绝对确保此类数据受到保护。此外,数据在传输时被充分加密。因此,当您在这种情况下谈论HTTP与HTTPS时,您就知道支付卡行业站在哪一边。



如何为您的网站获取HTTPS



如果您想为您的网站获得HTTPS的好处,您可以从知名经销商处获得您的SSL证书。像Gworg这样的公司以合理的价格为客户提供各种证书。当您选择从我们这里购买SSL证书时,您可以享受许多折扣。



关于HTTP和HTTPS区别的结论



既然您知道HTTP和HTTPS之间的区别,您就可以指出哪些网站对您来说是安全的(和不安全的)购物。自2014年以来,Google将网站的安全性(或缺乏安全性)视为排名因素。您还将观察到大多数没有HTTPS的网站在您输入关键字以在其搜索引擎上搜索某些内容时不会出现。这些网站将隐藏在称为万维网(即谷歌的第一个搜索引擎结果页面之后的任何内容)的山谷中。除非您专门寻找它们,否则您将找不到它们。



在HTTP与HTTPS的战斗中,只有一个能够脱颖而出。显然,这是HTTPS,因为它依赖于身份和PKI安全优势。但是,作为一个互联网社区,我们在从整体上从HTTP切换到HTTPS方面走了多远?Google的透明度报告显示,截至2021年1月,所有网站中有95%已实现加密。因此,如果您仍有HTTP网站,现在是转换为HTTPS的时候了。