如何实现安全web服务

简介:
   SSL(Secure Sockets Layer)安全协议又叫“安全套接层协议”。它是在网络传输层之上提供的一种基于RSA和对称加密算法的,用于浏览器和Web服务器之间的安全连接技术,用来提供两个应用之间通信的保密,可信和身份认证。它被视为 Internet 上 Web 浏览器和服务器的标准安全性措施。
     HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是以安全为目标的http通道,即在http传输协议中加入ssl层,由于https的安全访问是基于ssl,因此要实现安全访问,要配置的就是让ssl如何工作。 https是由网景公司开发,现在它被广泛用于万维网上安全领域的通讯,例如网络银行等方面。 http是基于的tcp的80 端口,而https是基于tcp的443端口。 
安装mod_ssl 模块,建议使用yum来安装,因为安装此模块时会有一些依赖关系。 
yum install mod_ssl
如果使用rpm安装,还要安装的软件包有:
distcache-1.4.5-14.1.i386.rpm
确保http软件包已经安装过了。
要给客户端签发证书,首要前提服务器CA要有自签证书。因此首先来做的就是创建自签证书。
切换到/etc/pki/CA目录下,执行openssl –genrsa 1024 > private/cakey.pem
来生成一对密钥文件。
在图中可以看到创建的过程,完成后,到private目录下查看是否创建成功。也可以使用openssl –in cakey
clip_image001
接下来执行命令:
openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3695
来生成一个待签名的 CA根证书,用来给其他申请者进行颁发证书。
clip_image003
在生成自签证书时,要填写证书信息以确保CA的真实性。红线框起来的是要填写的内容,在试验的时候可以有自己决定。
clip_image005
为了CA的证书安全性,建议将cakey.pem密钥文件的权限修改为600
clip_image006
接下来是编辑/etc/pki/tls/openssl.cnf 将里面的路径改为真实路径。
clip_image007
建立文件index.txt和serial 目的是存放颁发证书的信息。完成后,查看是否创建成功。
clip_image008
好了,CA的自签证书已经创建成功,接下来的CA任务就是给客户端的颁发证书了。但是在颁发证书之前,客户端要自己生成一对密钥文件,并向CA提出申请证书的请求。因此,下面要做的就是生成客户端的密钥,并且向CA提出申请了。具体步骤如下:
现在回到客户端,
切换到/etc/httpd目录下,创建ssl目录
clip_image009
执行命令:openssl –genrsa 1024 > http.key 来生成一对http协议的密钥文件。
clip_image010
密钥生成了,下一步就是向CA提出申请证书的请求了。具体命令如下:
openssl req –new –key httpd.key –out httpd.csr
clip_image012
申请证书,当然要填写申请者的信息了。
红线框起来的为示例。在信息题写完后,提示要输入密码,这个密码是用于保证证书安全性的密码,在查询修改密钥文件是会用到。这里就不再设定了。
clip_image014
现在回到服务器端。客户端的申请证书的请求已经到达CA处,那么CA该如何来给客户端签发证书呢?执行命令:
openssl ca –in httpd.csr –out httpd .crt –days 3655
有点错误了,该如何来解决呢?先看看出现错误的原因。错误提示是说在/etc/pki/CA/目录下,没有newcerts文件,此时,可以看到,newcerts目录是用来存放CA签发证书信息的,再联想到前面生成CA自签证书后创建的index.txt文件和serial文件,因此可以总结出:
CA在颁发证书时要用到三个文件: newcerts、index.txt和serial
如果在前面不创建index.txt文件和serial文件,在此处也会出现找不到index.txt文件和serial文件的。
clip_image016
错误既然找到了,那么就去/etc/pki/CA目录下创建newserts目录就行了。
clip_image017
再来执行签发证书的命令,OK!执行成功啦!
clip_image019
接下来就是一些交互过程,询问是否确认给客户端颁发证书。当然要颁发了,输入y就行了(如果不想颁发,也可以输入n)。
clip_image021
来查看一下刚刚生成的证书吧?
可以使用openssl x509 -in httpd.crt -noout -text查看生成的证书的信息 
也可以使用下面的命令查看证书持有人的标识信息 
openssl x509 -in httpd.cst -noout -subject
clip_image022
证书生成了,可是以前用的http协议不知道已经生成证书了。因为在默认情况下http协议是关闭支持ssl安全访问的。因此,下面要做的就是让http协议记住以后访问服务器要用https协议。具体操作如下:
切换到/etc/httpd/conf.d/目录下,编辑ssl.conf文件
clip_image023
找到SSLCertificateFile 和SSLCertificateKeyFile这两行,没有修改之前是这样的
clip_image025
把这两行修改为:SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
clip_image027
修改完成后,保存退出。重启http服务。
clip_image029
到此为止,所有的配置工作已经完成,嗯,是该验证一下的时候了!
在另外一台机器上,打开浏览器,输入IP地址,为了验证试验效果,先以http协议来访问服务器,在之前,服务器端已写好测试网页。
clip_image031
再来用https协议访问一下服务器,看看会出现什么效果呢?
选择“是”进入下一步。也可以先选择“查看证书”来查看一下证书信息来验证一下刚才的配置。
clip_image033
再次选择“是”。
clip_image034
OK,通过https协议也可以访问到服务器端的测试页,那么与http访问的呢?留意下图中右下角的锁标志,这就代表访问协议是基于加密的安全访问。在实际生活中,访问一些支付网站会见到这样的标志。
clip_image036









本文转自 linuxtro 51CTO博客,原文链接:http://blog.51cto.com/linuxtro/287003,如需转载请自行联系原作者
目录
相关文章
|
1天前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
14 6
|
2天前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
10 5
|
3天前
|
存储 安全 JavaScript
Web安全-XSS漏洞
Web安全-XSS漏洞
9 0
|
14天前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
27 0
|
14天前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
40 0
|
14天前
|
Java 网络架构 数据格式
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `<rest>` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
30 0
|
14天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
27 0
|
14天前
|
前端开发 API 开发者
JSF与RESTful服务的完美邂逅:如何打造符合现代Web潮流的数据交互新体验
【8月更文挑战第31天】随着互联网技术的发展,RESTful架构风格因其实现简便与无状态特性而在Web服务构建中日益流行。本文探讨如何结合JavaServer Faces (JSF) 和 JAX-RS 构建RESTful API,展示从前端到后端分离的完整解决方案。通过定义资源类、配置 `web.xml` 文件以及使用依赖注入等步骤,演示了在JSF项目中实现RESTful服务的具体过程,为Java开发者提供了实用指南。
25 0
|
14天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
40 0
|
14天前
|
JSON API 数据库
探索FastAPI:不仅仅是一个Python Web框架,更是助力开发者高效构建现代化RESTful API服务的神器——从环境搭建到CRUD应用实战全面解析
【8月更文挑战第31天】FastAPI 是一个基于 Python 3.6+ 类型提示标准的现代 Web 框架,以其高性能、易用性和现代化设计而备受青睐。本文通过示例介绍了 FastAPI 的优势及其在构建高效 Web 应用中的强大功能。首先,通过安装 FastAPI 和 Uvicorn 并创建简单的“Hello, World!”应用入门;接着展示了如何处理路径参数和查询参数,并利用类型提示进行数据验证和转换。
31 0