A. 怎样才能叫熟悉JAVA认证、ORACLE认证
Sun Java认证分为两个级别:Sun 认证Java程序员和Sun 认证Java开发员。Sun 认证Java程序员考试内容涉及Java所有相关知识、编程概念及applet开发技巧。Sun认证Java程序员考试旨在考察您通过应用软件分配进行复杂编程的能力。之后还要测试您完成编程所需的知识。每次考试都包括65道以上的多项选择题,时间大约为90分钟。考试合格后由Sun公司颁发的国际通用的Java程序员证书。
Java程序员认证
概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets。在本课程中您将学会Java语言的语法。如何使用Java来创建图形用户接口(GUI),事件处理机制,例外处理,通过设计与开发各种Java程序来获得实际的编程经验。您也将学到文件输入/输出(I/O),多线程和网络的知识。 目标:本课程完成后,您将具备以下能力: 使用Java编程语言创建Java应用程序和applets 定义和描述垃圾搜集,安全性和Java虚拟机(JVM) 描述和使用Java语言面向对象的特点;开发图形用户接口(GUI) 利用Java支持的多种布局管理 描述和使用 Java的事件处理模式 使用Java语言的鼠标输入,文本,窗口和菜单窗口部件 使用Java的例外处理来控制程序执行和定义用户自己的例外事件 使用Java语言的先进的面向对象特点,包括方法重载,方法覆盖,抽象类,接口,final,static和访问控制;实现文件的输入输出(I/O) 使用Java语言内在的线程模式来控制多线程 使用Java的Sockets机制进行网络通信 预备知识:熟悉DOS操作,用过WINDOWS并能用C或C++编程。
编辑本段Java开发员认证
概述:本课程将提供给学员设计资料服务器应用法的实际设计方法,学员将使用Java声音、图形、网络通讯等接口,编写与服务器相连接的Java应用程序,通过本课程学员还能学到如何在Java程序中调用本机用其它计算机语言编写的程序。 本课程是为熟悉Java语言结构及语法的程序员而设立的。以便他们能在本课程中获得开发复杂的、产品级的Java应用技术。 目标:在学完本课程后,学员将能够: 设计和开发Java GUI 设计和开发动画Java应用程序 掌握了Java网络编程技术 懂得了JDBC-API的基本结构 知道UNIX与Windows NT互连有哪些技术问题 能够解释在Java程序中调用其它语言所编写的程序的方法与步骤
编辑本段Sun认证Java程序员考试
SUN JAVA认证
在全球范围内,SUN公司的Java技术培训和认证不仅是Java开发技术领域最权威的认证,同时也是开发类认证中很重要的一种,SUN公司的Java技术认证包括4种: Sun Certified Java Programmer(SCJP) Sun Certified Java Developer(SCJD) Sun Certified Web Component Developer for Java 2 Platform Enterprise Edition Sun Certified Enterprise Architect for J2EE Technology SCJP 可以说各种Java认证的基础,相对于SCJD来说,SCJP跟侧重于测验您的Java程序设计概念及能力,内容偏重于Java语法及JDK的内容。其对应的最主要的学习课程是SL-275。SCJP 的学习/考试过程是相对相对比较明确的,首先学员参加SL-275的培训课程(标准费用大致在2600人民币,包括考试券、教材费),也可以单独购买考试券(Certification Voucher,费用现在是1250元),然后在Prometric考试中心参加考试。通过后获得Sun颁发的SCJP认证证书。 获得SCJD认证的过程相对复杂一些,Sun建议的SCJD学习课程是Java Progeamming Language Workshop(SL-285),当然,学习Java你还可以参考Sun的一个面向对象的教程:Object-Oriented Analysis and Design (00-226)。 获得SCJD认证并不是直接参加考试通过获得,首先,你必须是SCJP,在申请SCJD的认证的时候,需要先参加一个程序设计测试(费用现在是2100元),这个测试基本上是给你一个实际应用案例,然后你用Java进行实现,要注意的是这个测试主要考察的的是你以Java2技术开发一个工程的总体能力,而不是考察你的编程技巧。这个编程测试是不限制时间的[1]。
B. 如何用JAVA实现CA认证
by fleshwound (http://www.smatrix.org)
(注:这是我们的完整设计中的一部分,其它有些部分尚要求保密,希望这个拙文能给做J2EE项目的兄弟们带来点帮助,有任何关于JAVA安全和密码学理论和应用的问题可以来我们的论坛:http://bbs.smatrix.org)
近年来,随着互连网和计算机的普及,电子商务和电子政务成为当今社会生活的重要组成部分,以网上订购和网上在线支付的为主要功能的网店系统(Web Shop System)是目前电子商务的热门技术。
JAVA以它“一次编译,处处运行”的神奇魅力和强大的安全技术支持,很快成为WEB信息系统开发的首选语言,而J2EE就是为了WEB应用开发而诞生的。目前J2EE的应用大部份都是多层结构的, 良好的分层可以带来很多好处,例如可以使得代码结构清晰,方便组件复用,可以快速适应应用的新需求。同时,JAVA还提供了强大的安全技术(例如:JCA,HTTPS,JSSA等)。对于电子商务系统而言,系统平台的安全性和效率是其中的核心问题,而这些正好是J2EE及其相关技术的强项。
0 系统中所要使用的API及其特点介绍
该系统中主要使用的技术和特点如下:
(1)EJB :主要是作为J2EE中间层,完成商业逻辑。目前主要有三种类型的EJB: 会话 Bean (Session Bean)、实体Bean (Entity Bean)、消息驱动的Bean(MDB);
(2)JAAS:在J2EE 中用于处理认证和授权服务,进行资源控制;
(3)JSP和Java Servlets:用于J2EE的表示层,生成用户界面;
(4)JDBC:用于数据库(资源层)的连接和与数据库进行交互;
(5)JNDI:Java命名和目录接口,该API实际上是用来访问J2EE的所有资源;
(6)JMS:Java消息传输服务,配合MDB使用。
1 Session的安全问题与解决方案
在项目中,保存Session一般有两种方法,一是分别放在客户端,一是集中放在服务器端。在客户端保存Session是指将Session的状态串行化,然后嵌入到返回给客户的HTML页面中。当Session中的信息很少时,这样实现比较容易,另外这种方法还消除了跨越多个服务器复制状态的问题。
但是在客户端保存Session状态时,必须考虑到由此带来的安全问题,因为黑客可能通过嗅探攻击(Sniffer)获取敏感信息。为了不让敏感信息数据暴露,解决的方法是对数据进行加密或者使用HTTPS,采用SSL技术。
如果是要保存大量Session状态的应用,最好的方法是将Session状态统一放在服务器端。当状态被保存在服务器上时,不会有客户端Session管理的大小和类型限制。此外,还避免了由此带来的安全问题,而且也不会遇到由于在每个请求间传送Session状态带来的性能影响,但是对服务器的性能要求比较高。网店系统的安全性要求较高,因此Session还是集中放在中间层服务器端,同时对客户端到服务器端采用SSL连接。
2客户端的缓存安全设计
大部分顾客使用的WEB浏览器将浏览过的页面缓存在磁盘上,这样我们浏览网页的时候不需要重新向服务器发出HTTP请求,对于普通的网页不存在安全问题。但是对于需要保密的WEB应用,会带来安全隐患和泄漏隐私,因此对于客户端缓存,也必须做适当的处理。最好的方法就是禁止使用缓存,但是对于大部分顾客而言,要求在客户端不用缓存是不现实的,因此我们必须在中间层解决该问题,方法是采用Servlet过滤器技术。该技术是Servlet2.3以后才出现的,在J2EE中的应用很广泛。要使用该技术,需要执行以下步骤:
(1) 编写一个Servlet过滤器,实现javax.servlet.Filter接口;
(2) 修改Web.xml文件,使容器知道过滤器在什么时候被调用。
Javax.servlet.Filter主要有3个方法:
(1)init(FilterConfig cfg) :当开始使用 servlet 过滤器服务时,容器调用此方法一次。传送给此方法的 FilterConfig 参数包含 servlet 过滤器的初始化参数;
(2)destroy() :当不再使用 servlet 过滤器服务时,容器调用此方法;
(3)doFilter(ServletRequest req, ServletResponse res, FilterChain chain): 容器为每个映射至此过滤器的 servlet 请求调用此方法,然后才调用该 servlet 本身。传送至此方法的 FilterChain 参数可用来调用过滤器链中的下一个过滤器。当链中的最后一个过滤器调用 chain.doFilter() 方法时,将运行最初请求的 servlet。因此,所有过滤器都应该调用 chain.doFilter() 方法。如果过滤器代码中的附加认证检查导致故障,则不需要将原始 servlet 实例化。在这种情况下,不需要调用 chain.doFilter() 方法,相反,可将其重定向至其它一些错误页面。
如果 servlet 映射至许多 servlet 过滤器,则按照应用程序的部署描述符(web.xml)中的先后出现的次序来调用 servlet 过滤器。这一部分的主要代码如下:
//要引入的类库
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.security.*;
//设置servlet过滤代码段
public class CacheFilter implements Filter {
protected FilterConfig filterConfig;
private String cachetp;
//初始化
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
cachetp=config.getInitParameter("CacheControlType");
if (cachetp==null)
{
throw new ServletException("没有定义Cache控制类型");
}
}
//
public void destroy()
{
this.filterConfig = null;
}
//执行过滤器部分
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException, ServletException {
if (response instanceof HttpServletResponse )
{
HttpServletResponse resp=(HttpServletResponse) response;
resp.addHeader("Cache-Control",cachetp);
}
else
{
throw new ServletException("非法相应!");
}
chain.doFilter(request, response);
}
}
以下是在Web.xml中添加的对应的内容
CacheFilter
CacheFilter
Cache filter
CacheControlType
no-store
CacheFilter
/cachecontrol
3视图访问的安全设置
所有用户都必须登陆,只有登陆才可以看到用户的角色和权限相对应的视图。因此一个重要的问题就是如何防止一个视图或者部分的视图被一个未被授权的客户直接访问。
在一些情况下,资源被限制为完全不允许某些用户访问,例如:管理后台就不应该让普通顾客会员访问。有几个方法可以做到这一点。一个方法是加入应用逻辑到处理控制器或者视图的程序中,禁止某些用户访问。另一个方案是设置运行时的系统,对于一些资源,仅允许经由另一个应用资源内部调用。在这种情形,对于这些资源的访问必须被通过另一个表现层的应用资源进行,例如一个servlet控制器。对于这些受限制的资源不允许通过浏览器直接调用。
在J2EE中,可以利用Web容器中内置的安全技术来进行角色访问资源的控制。根据最新版本的servlet和EJB规范,安全限制在web.xml的配置描述文件中描述,我们可以通过配置web.xml来控制角色访问,修改配置描述文件web.xml就可以达到快速修改安全策略的目的。
安全限制允许使用编程的方法根据用户的角色来控制访问。资源可以被某些角色的用户访问,同时禁止其它的角色访问。另外,某个视图的一部分也可以根据用户的角色来限制其访问。如果某些资源完全不允许来自于浏览器的直接访问,那么这些资源可以配置只允许一些特殊的安全角色访问,而这些安全角色不分配给任何一个用户。这样只要不分配这个安全角色,那么以这种方式配置的资源将禁止所有的浏览器直接访问。下面一个例子就是web.xml配置文件的一部分,它定义了一个安全的角色以限制直接的浏览器访问。角色的名字是“vip”,受限制资源的名字是specialgood1.jsp、specialgood2.jsp、specialgood3.jsp和bookinfo.jsp。除非一个用户或者组被分配到“vip”角色,否则这些客户都不可以直接访问这些JSP页面。不过,由于内部的请求并不受这些安全的限制,一个初始时由某servlet控制器处理的请求将会导向到这些受限制的页面,这样它们就可以间接访问这些JSP页面。
<security-constraint>
<web-resource-collection>
<web-resource-name>specialgood </web-resource-name>
<description>special good infomation</description>
<url-pattern>/shop/jsp/a1/specialgood1.jsp</url-pattern>
<url-pattern>/shop/jsp/a1/specialgood2.jsp</url-pattern>
<url-pattern>/shop/jsp/a1/specialgood3.jsp</url-pattern>
<url-pattern>/shop/jsp/a1/bookinfo.jsp</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>vip</role-name>
</auth-constraint>
</security-constraint>
3 各层次间的耦合问题与解决策略
表现层的数据结构,例如HttpServletRequest,应该被限制在表现层上。如果将这些细节放到其它层(主要是业务逻辑层)中,将大大降低了代码的的重用性,令代码变得复杂,并且增加了层间的耦合。解决方法一个常用方法是不让表现层的数据结构和商业层共享,而是拷贝相关的状态到一个更常见的数据结构中再共享。你也可以选择由表现层数据结构中将相关的状态分离出来,作为独立的参数共享。另外在域对象暴露表现层的数据结构,如果将诸如HttpServletRequest的请求处理数据结构和域对象共享,这样做也会增加了应用中两个不同方面的耦合。域对象应该是可重用的组件,如果它们的实现依赖协议或者层相关的细节,它们可重用性就很差,同时维护和调试高耦合的应用更加困难。成熟的解决方案是不通过传送一个HttpServletRequest对象作为一个参数,而是拷贝request对象的状态到一个更为常用的数据结构中,并且将这个对象共享给域对象。你也可以选择由HttpServletRequest对象中将相关的状态分离出来,并且将每一个的状态作为一个独立的参数提供给域对象。
4 EJB的安全设计与控制
EJB的执行过程一般是这样的:(1)客户端通过JNDI检索Home对象的引用;(2)JNDI返回Home对象的引用;(3)请求创建一个新的EJB对象;(4)创建EJB对象;(5)返回EJB对象;(6)调用商务方法;(7)调用Enterprise Bean.引起EJB的安全问题原因主要存在三个方面:
(1)用包嗅探器(Packet Sniffer)获取用户凭证信息并直接调用会话Bean;(2)对实体Bean进行未授权访问;(3)对消息驱动的Bean的无效访问(发布恶意或者虚假的消息).
以上安全问题可导致客户端或者服务端欺骗攻击和DDOS攻击。解决问题(1)的方法是使用JAVA中SSL技术来保护通讯,解决(2)的方法是对于实体Bean全部采用本地接口或者采用JAAS(文献[1]),对于(1)和(2),我们可以同时采取以下措施:让容器完成认证并传输用户凭证信息,另外使用声明性或者程序设计的安全验证角色。对于问题(3),J2EE并没有提供一个很好的方案,我们的解决方案是采用数字签名技术来保证信息来自可信任的源。该方法的结合代码简要说明如下,消息采用JMS传递:
//客户端,要用到消息发送者的私钥进行签名
...
message.setString("userid",userid);
message.setString("useritem",useritem);
message.setInt("usersn",serialnum);//包含一个序列号
message.setString("usercertid",certid);
String signature=getSignature(userid+":"+useritem+":"+serialnum+":"+certid);
//进行签名,其中getSignature为签名函数,要用到消息发送者的私钥进行签名,具体密码学技术可参考文献[2];
message.setString("signature",signature);
sendmessage(message);//发送信息
...
//服务器端
String checkstr=userid+":"+message.getString("useritem")+":"+
message.getInt("usersn")+":"+usercertid;
boolean b_check=checkSignature(checkstr,msg.getString("signature"),
usercertid,userid);
//进行验证,其中checkSignature为验证函数,要用到消息发送者的公钥进行验证,具体密码学技术可参考文献[2];
5 CA中心与证书的生成
前面我们已经提出在客户端要使用HTTPS和SSL,因此要建立一个自己的CA中心来管理分发证书,加强客户端到中间层服务器端通讯的安全性.建立CA中心的第一步是利用JAVA工具包中的Keytool生成一个X509证书,然后将该证书交由权威CA中心Vertsign签名,再将该证书设置为根证书,建立自己的CA.每次有新用户注册交易的时候,都必须签发一个用户独一无二的证书,关键的过程是如何签发证书.签发证书的过程如下:
(1)从中间层CA服务器的密钥库中读取CA的证书:
FileInputStream in=new FileInputStream(ShopCAstorename);
KeyStore ks=KeyStore.getInstance("JKS");
ks.load(in,storepass);
java.security.cert.Certificate c1=ks.getCertificate(alias);
(2)获得CA的私钥:
PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass);
(3)从CA的证书中提取签发者信息:
byte[] encod1=c1.getEncoded();
X509CertImpl shopcimp1=new X509CertImpl(encod1);
X509CertInfo shopcinfo1=(X509CertInfo)shopcimp1.get(X509CertImpl.NAME+
"."+X509CertImpl.INFO);
X500Name issuer=(X500Name)shopcinfo1.get(X509CertInfo.SUBJECT+
"."+CertificateIssuerName.DN_NAME);
(4)获取待签发的证书相关信息,与(3)类似;
(5)设置新证书的有效期、序列号、签发者和签名算法:
//设置新证书有效期为1年
Date begindate =new Date();
Date enddate =new Date(begindate.getTime()+3000*24*360*60*1000L); CertificateValidity cv=new CertificateValidity(begindate,enddate);
cinfo2.set(X509CertInfo.VALIDITY,cv);
//设置新证书序列号
int sn=(int)(begindate.getTime()/1000);
CertificateSerialNumber csn=new CertificateSerialNumber(sn);
cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);
//设置新证书签发者
cinfo2.set(X509CertInfo.ISSUER+"."+
CertificateIssuerName.DN_NAME,issuer);
//设置新证书算法
AlgorithmId algorithm =
new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);
cinfo2.set(CertificateAlgorithmId.NAME+
"."+CertificateAlgorithmId.ALGORITHM, algorithm);
(6)创建证书并签发:
// 创建证书
X509CertImpl newcert=new X509CertImpl(cinfo2);
// 签名
newcert.sign(caprk,"MD5WithRSA");
(7)将新证书提供给注册用户,并提示安装,一般的做法是在用户注册成功后系统立即返回一个证书对象给中间层某个Servlet,由其返回给用户。
参考文献
[1]沈耀,陈昊鹏,李新颜.EJB容器中基于JAAS 的安全机制的实现.[J]:计算机应用与软件 2004.9 16~18
[2](美)Jess Garms著,庞南等译. Java安全性编程指南[M].北京:电子工业出版社 2002
[3] http://java.sun.com/j2ee/
[4] 蔡剑,景楠. Java 网络程序设计:J2EE(含1.4最新功能)[M].北京: 清华大学出版社 2003
[5](美)John Bell Tony Loton. Java Servlets 2.3编程指南[M].北京: 电子工业出版社 2002
[6](美)Joseph J.Bambara等著,刘堃等译. J2EE技术内幕[M].北京:机械工业出版社 2002
[7](美)Li Gong著.JAVA 2平台安全技术——结构、API设计和实现[M].北京: 机械工业出版社 2000
[8](英)Danny Ayers等著,曾国平等译. Java服务器高级编程[M].北京:机械工业出版社 2005
[9]http://www.smatrix.org/bbs
[10]http://www.smatrix.cn/bbs
C. JAVA软件工程师资格证书 怎么考
考JAVA软件工程师资格证书需要学习以下内容。
J2SE平台Java程序设计,包括Swing图形程序设计, Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,流和文件,多线程程序设计。
Java桌面系统项目开发,4~5人组成一个项目组,项目大小为(15人*工作日)。
Linux的基本操作,Linux下的Java程序开发,Linux系统的简单管理。
Oracle数据库,包括SQL/PLSQL;数据库和数据库设计;简单掌握ORACLE9i 数据库的管理。
(3)jdbc证书扩展阅读:
Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。
每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
D. java程序员都有什么认证 最有权威的有哪些
Sun Java认证分为两个级别:Sun 认证Java程序员和Sun 认证Java开发员。Sun 认证Java程序员考试内容涉及Java所有相关知识、编程概念及applet开发技巧。Sun认证Java程序员考试旨在考察您通过应用软件分配进行复杂编程的能力。之后还要测试您完成编程所需的知识。每次考试都包括65道以上的多项选择题,时间大约为90分钟。考试合格后由Sun公司颁发的国际通用的Java程序员证书。
[编辑本段]Java程序员认证
概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets。在本课程中您将学会Java语言的语法。如何使用Java来创建图形用户接口(GUI),事件处理机制,例外处理,通过设计与开发各种Java程序来获得实际的编程经验。您也将学到文件输入/输出(I/O),多线程和网络的知识。
目标:本课程完成后,您将具备以下能力:
使用Java编程语言创建Java应用程序和applets
定义和描述垃圾搜集,安全性和Java虚拟机(JVM)
描述和使用Java语言面向对象的特点;开发图形用户接口(GUI)
利用Java支持的多种布局管理
描述和使用 Java的事件处理模式
使用Java语言的鼠标输入,文本,窗口和菜单窗口部件
使用Java的例外处理来控制程序执行和定义用户自己的例外事件
使用Java语言的先进的面向对象特点,包括方法重载,方法覆盖,抽象类,接口,final,static和访问控制;实现文件的输入输出(I/O)
使用Java语言内在的线程模式来控制多线程
使用Java的Sockets机制进行网络通信
预备知识:熟悉DOS操作,用过WINDOWS并能用C或C++编程。
[编辑本段]Java开发员认证
概述:本课程将提供给学员设计资料服务器应用法的实际设计方法,学员将使用Java声音、图形、网络通讯等接口,编写与服务器相连接的Java应用程度,通过本课程学员还能学到如何在Java程序中调用本机用其它计算机语言编写的程序。
本课程是为熟悉Java语言结构及语法的程序员而设立的。以便他们能在本课程中获得开发复杂的、产品级的Java应用技术。
目标:在学完本课程后,学员将能够:
设计和开发Java GUI
设计和开发动画Java应用程序
掌握了Java网络编程技术
懂得了JDBC-API的基本结构
知道UNIX与Windows NT互连有哪些技术问题
能够解释在Java程序中调用其它语言所编写的程序的方法与步骤
[编辑本段]Sun认证Java程序员考试
sun certificated java programmer (SCJP)
一种Java认证考试
对于Java程序设计员,Sun推出两项认证:Sun Certificated Java Programmer (SCJP)和Sun Certificated Java Developer(SCJD)。
SCJP 可以说各种Java认证的基础,相对于SCJD来说,SCJP跟侧重于测验您的Java程序设计概念及能力,内容偏重于Java语法及JDK的内容。其对应的最主要的学习课程是SL-275。SCJP 的学习/考试过程是相对相对比较明确的,首先学员参加SL-275的培训课程(标准费用大致在2600人民币,包括考试券、教材费),也可以单独购买考试券(Certification Voucher,费用现在是1250元),然后在Prometric考试中心参加考试。通过后获得Sun颁发的SCJP认证证书。
E. JAVA程序开发 需要哪些资格证书
SCJP、scjd, sdbcd, scwcd, scea, 这一批是sun的java认证。
scjp:SUN认证程序员
scjd: SUN认证开发员
scbcd: SUN认证业务组件开回发员
scwcd: SUN认证WEB组件开发员
SCEA: SUN认证企答业架构师
F. 如何为MySQL设置SSL证书
MySQL默认的数据通道是不加密的,在一些安全性要求特别高的场景下,我们需要配置MySQL端口为SSL,使得数据通道加密处理,避免敏感信息泄漏和被篡改。
当然,启用MySQL SSL之后,由于每个数据包都需要加密和解密,这个对MySQL的性能是有不小影响的,读者们在使用的时候,要根据实际情况斟酌。
MySQL客户端登录服务器时候的密码不是明文传输,有加密策略处理。
笔者是在 ubuntu12.04 系统上使用MySQL 5.5版本测试的,其他环境请读者自行匹配。
配置MySQL服务器证书
编辑 /etc/mysql/my.cnf 文件
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
把上面三行默认证书配置注释打开,使用自己的证书。笔者就使用上次在搭建自己的CA服务 – OpenSSL CA 实战文章中生成的证书
ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
ssl-cert=/home/yunweipai/user_certs/web.cer
ssl-key=/home/yunweipai/user_certs/web_key_plain.pem
这里需要注意的是,在ubuntu上,配置证书后如果不生效,参考这里解决方法
注意上面配置的 web_key_plain.pem 文件,由于MySQL不支持加密后的私钥,因此我们使用命令
openssl rsa -in web_key.pem -passin pass:Yunweipai@123 -out web_key_plain.pem
将私钥解密。MySQL不支持私钥加密的原因是从安全性角度考虑,因为如果要用户传递一个加密的私钥,那么必须要用户传密码,那么MySQL怎么存储这个密码呢?这就引出了我们在密码存储和传输的安全建议里面提到的一系列问题了。
所以MySQL为了简化实现,就不支持私钥加密。
指定客户端连接方式
MySQL服务端在对客户端授权的时候,可以通过选项指定客户端连接MySQL 服务器的SSL级别,参考MySQL赋权的 REQUIRE值:
ssl_option
SSL: 不认证客户端,客户端不需要提供证书
X509: 客户端必须发送一个有效的X509证书
issuer: 客户端的证书是否是服务器所配置的CA颁发的(在我们场景下是ca_cert.cer颁发的证书)
subject: 认证证书的subject(关于证书的subject在之前的文章有介绍)
cipher: 指定加密算法
这些选项可以叠加使用,如:X509|issuser
客户端连接(SSL方式)
mysql 客户端连接
mysql -u root -pChangeme_123 -P 3306 --ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (i686) using readline 6.2
Connection id: 36
Current database:
Current user: root@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 29 sec
Threads: 1 Questions: 109 Slow queries: 0 Opens: 48 Flush tables: 1 Open tables: 41 Queries per second avg: 3.758
--------------
JDBC连接
在jdbc字符串中增加下面参数
useSSL=true&verifyServerCertificate=false
这么就不需要客户端配置证书了,配置就简单很多。因为mysql本身有账号口令认证,因此不需要证书认证。
G. 怎样成为Java软件工程师需要考证么
要考试的哦,不过看你往哪些方面发展。如果只是了解一下的话,那学一下J2EE就可以了,一般的可以做;要是你想深入一点的话,你看一下下面的:如果要往J2EE方向发展的话,下面的都要学JDBC、Hibernate、HTML、JavaScript、Struts、Servlet、JSP、Spring、EJB.当然服务器的部署运用也要学,如:Tomcat、JBoss、Weblogic。数据库操作也要会,自己学的话用MySQL。其实每个公司的框架都不一样,学框架也很重要。
Sun 在 UNIX领域一直是技术上和市场占有率的领先者;近年来又推出Java技术,更成为业界的标准。所以Sun公司所举办的认证考试,必然成为Java和UNIX在全球信息界公认的标准。 Sun推出的专业认证包括下列三种: Java认证考试 关于Java方面,Sun推出七项认证:
Sun Certified Java Programmer for the Java 2 Platform、
Sun Certified Developer for the Java 2 Platform
Sun Certified Web Component Developer for the Java 2 Platform, Enterprise Edition 1.4
Sun Certified Business Component Developer for the Java 2 Platform, Enterprise Edition
Sun Certified Web Services Developer for the Java 2 Platform, Enterprise Edition
Sun Certified Enterprise Architect for the Java 2 Platform, Enterprise Edition
Sun Certified Mobile Application Developer for the Java 2 Platform, Micro Edition
Solaris系统管理认证考试
Sun 公司为用户提供支持 Solaris 10 操作系统的高品质培训和认证服务,可帮助企业最大限度地快速实现该创新操作系统的重要价值。请点击此处以查看更多详情!
对Solaris/Sun OS系统管理员,Sun推出Certified Solaris Administrator。SCSA分别为两个等级( Part I 和 Part II ),测试您对Solaris 系统管理的了解程度。 Solaris网络管理认证考试
为了测试使用者对于Solaris网络管理能力,Sun推出Certified Network Administrator(SCNA)。内容包括基本网络概念、Routing and Subnet、Security、Performance、DNS、NIS+等 通过Sun任何一门专业认证后,您将全收到Sun Microsystems 总公司寄发的资格证书及徽章,并有权将通过Sun认证的标记印在个人名片上,作为个人技术能力的肯定。 Java程序员是美国SUN公司国际认证的程序员,她是目前全球最受重视、最受欢迎的程序员资格认证之一,具备这一认证就可以获得极好的工作机会和丰厚待遇。
Java跨平台等许多特性使之成为当代成长最快的软件产品:它受到了大约150个许可证颁发机构、200所大学和50万开发者的拥戴;1000多个应用程序是用它编写的;有关它的书籍有800余种;Java开发套件的下载次数超过一百万次;Java BEANS? 开发套件的下载次数超过10万次;受到了全球所有主要计算机厂商的支持,而这一切都发生在其发表后的800天内;Java闯入企业计算的心脏正成为大众传媒舆论的推动力量,正在改变企业的计算环境。它通过为因特网商务提供安全和稳健平台的方式改变商业自身。Java计算是各行各业中倍受信赖的企业解决方案。独立于平台的Java计算环境可以降低企业的总成本,缩短产品上市周期,安全地扩展公司的网络。不少国家到中国寻求合作伙伴时,都把能否用Java进行编程作为合作的前提条件。 =============
J2EE和J2ME没有联系.J2EE是做B/S软件或网站的
但如果了解J2EE的一些特性对J2ME也是有好处的,但是J2SE必须学得很好。
H. Java程序员有哪几种认证模式
Sun Java认证分为两个级别:Sun 认证Java程序员和Sun 认证Java开发员。Sun 认证Java程序员考试内容涉及Java所有相关知识、编程概念及applet开发技巧。Sun认证Java程序员考试旨在考察您通过应用软件分配进行复杂编程的能力。之后还要测试您完成编程所需的知识。每次考试都包括65道以上的多项选择题,时间大约为90分钟。考试合格后由Sun公司颁发的国际通用的Java程序员证书。
[编辑本段]Java程序员认证
概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets。在本课程中您将学会Java语言的语法。如何使用Java来创建图形用户接口(GUI),事件处理机制,例外处理,通过设计与开发各种Java程序来获得实际的编程经验。您也将学到文件输入/输出(I/O),多线程和网络的知识。
目标:本课程完成后,您将具备以下能力:
使用Java编程语言创建Java应用程序和applets
定义和描述垃圾搜集,安全性和Java虚拟机(JVM)
描述和使用Java语言面向对象的特点;开发图形用户接口(GUI)
利用Java支持的多种布局管理
描述和使用 Java的事件处理模式
使用Java语言的鼠标输入,文本,窗口和菜单窗口部件
使用Java的例外处理来控制程序执行和定义用户自己的例外事件
使用Java语言的先进的面向对象特点,包括方法重载,方法覆盖,抽象类,接口,final,static和访问控制;实现文件的输入输出(I/O)
使用Java语言内在的线程模式来控制多线程
使用Java的Sockets机制进行网络通信
预备知识:熟悉DOS操作,用过WINDOWS并能用C或C++编程。
[编辑本段]Java开发员认证
概述:本课程将提供给学员设计资料服务器应用法的实际设计方法,学员将使用Java声音、图形、网络通讯等接口,编写与服务器相连接的Java应用程度,通过本课程学员还能学到如何在Java程序中调用本机用其它计算机语言编写的程序。
本课程是为熟悉Java语言结构及语法的程序员而设立的。以便他们能在本课程中获得开发复杂的、产品级的Java应用技术。
目标:在学完本课程后,学员将能够:
设计和开发Java GUI
设计和开发动画Java应用程序
掌握了Java网络编程技术
懂得了JDBC-API的基本结构
知道UNIX与Windows NT互连有哪些技术问题
能够解释在Java程序中调用其它语言所编写的程序的方法与步骤
[编辑本段]Sun认证Java程序员考试
sun certificated java programmer (SCJP)
一种Java认证考试
对于Java程序设计员,Sun推出两项认证:Sun Certificated Java Programmer (SCJP)和Sun Certificated Java Developer(SCJD)。
SCJP 可以说各种Java认证的基础,相对于SCJD来说,SCJP跟侧重于测验您的Java程序设计概念及能力,内容偏重于Java语法及JDK的内容。其对应的最主要的学习课程是SL-275。SCJP 的学习/考试过程是相对相对比较明确的,首先学员参加SL-275的培训课程(标准费用大致在2600人民币,包括考试券、教材费),也可以单独购买考试券(Certification Voucher,费用现在是1250元),然后在Prometric考试中心参加考试。通过后获得Sun颁发的SCJP认证证书。
I. 就业java程序员考哪些IT认证比较合适
考SUN公司的IT认证好.比较权威点.不过就是贵一点.
Sun Java认证分为两个级别:Sun 认证Java程序员和Sun 认证Java开发员。Sun 认证Java程序员考试内容涉及Java所有相关知识、编程概念及applet开发技巧。Sun认证Java程序员考试旨在考察您通过应用软件分配进行复杂编程的能力。之后还要测试您完成编程所需的知识。每次考试都包括65道以上的多项选择题,时间大约为90分钟。考试合格后由Sun公司颁发的国际通用的Java程序员证书。
[编辑本段]Java程序员认证
概述:本课程使学员掌握如何使用标准Java Development kit(JDK)开发应用程序和applets。在本课程中您将学会Java语言的语法。如何使用Java来创建图形用户接口(GUI),事件处理机制,例外处理,通过设计与开发各种Java程序来获得实际的编程经验。您也将学到文件输入/输出(I/O),多线程和网络的知识。
目标:本课程完成后,您将具备以下能力:
使用Java编程语言创建Java应用程序和applets
定义和描述垃圾搜集,安全性和Java虚拟机(JVM)
描述和使用Java语言面向对象的特点;开发图形用户接口(GUI)
利用Java支持的多种布局管理
描述和使用 Java的事件处理模式
使用Java语言的鼠标输入,文本,窗口和菜单窗口部件
使用Java的例外处理来控制程序执行和定义用户自己的例外事件
使用Java语言的先进的面向对象特点,包括方法重载,方法覆盖,抽象类,接口,final,static和访问控制;实现文件的输入输出(I/O)
使用Java语言内在的线程模式来控制多线程
使用Java的Sockets机制进行网络通信
预备知识:熟悉DOS操作,用过WINDOWS并能用C或C++编程。
[编辑本段]Java开发员认证
概述:本课程将提供给学员设计资料服务器应用法的实际设计方法,学员将使用Java声音、图形、网络通讯等接口,编写与服务器相连接的Java应用程度,通过本课程学员还能学到如何在Java程序中调用本机用其它计算机语言编写的程序。
本课程是为熟悉Java语言结构及语法的程序员而设立的。以便他们能在本课程中获得开发复杂的、产品级的Java应用技术。
目标:在学完本课程后,学员将能够:
设计和开发Java GUI
设计和开发动画Java应用程序
掌握了Java网络编程技术
懂得了JDBC-API的基本结构
知道UNIX与Windows NT互连有哪些技术问题
能够解释在Java程序中调用其它语言所编写的程序的方法与步骤
[编辑本段]Sun认证Java程序员考试
sun certificated java programmer (SCJP)
一种Java认证考试
对于Java程序设计员,Sun推出两项认证:Sun Certificated Java Programmer (SCJP)和Sun Certificated Java Developer(SCJD)。
SCJP 可以说各种Java认证的基础,相对于SCJD来说,SCJP跟侧重于测验您的Java程序设计概念及能力,内容偏重于Java语法及JDK的内容。其对应的最主要的学习课程是SL-275。SCJP 的学习/考试过程是相对相对比较明确的,首先学员参加SL-275的培训课程(标准费用大致在2600人民币,包括考试券、教材费),也可以单独购买考试券(Certification Voucher,费用现在是1250元),然后在Prometric考试中心参加考试。通过后获得Sun颁发的SCJP认证证书。