当前位置: 首页 > news >正文

珠海网站建设哪个好薇音速企业名录搜索软件

珠海网站建设哪个好薇,音速企业名录搜索软件,wordpress标题收起,博物馆网站建设的目标spark在服务器运行示例通常#xff0c;在开发或/和针对真实场景进行测试期间#xff0c;我们#xff08;开发人员#xff09;面临着运行成熟的HTTPS服务器的需求#xff0c;可能同时进行一些模拟。 在JVM平台上#xff0c;除非您知道适合此工作的正确工具#xff0c;否则… spark在服务器运行示例 通常在开发或/和针对真实场景进行测试期间我们开发人员面临着运行成熟的HTTPS服务器的需求可能同时进行一些模拟。 在JVM平台上除非您知道适合此工作的正确工具否则它过去并不是一件容易的事。 在这篇文章中我们将使用出色的Spray框架和Scala语言创建一个完全可操作的HTTPS服务器的框架。 首先我们需要分别生成x509证书和私钥。 幸运的是使用openssl命令行工具非常容易。 openssl req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 1024 -nodes 正如我们在JVM平台上一样我们的基本目标是拥有Java密钥库 JKS 这是安全证书的存储库。 但是要将我们新生成的证书导入JKS 我们必须以PKCS12格式导出它然后从中创建密钥库。 同样在resque上使用openssl 。 openssl pkcs12 -export -in certificate.crt -inkey certificate.key -out server.p12 -name sample-https-server -password pass:change-me-please 请注意存档服务器.p12受密码保护。 现在最后一步涉及JDK发行版中的命令行工具keytool 。 keytool -importkeystore -srcstorepass change-me-please -destkeystore sample-https-server.jks -deststorepass change-me-please -srckeystore server.p12 -srcstoretype PKCS12 -alias sample-https-server 结果是受密码保护的sample-https-server.jks密钥库我们可以在HTTPS服务器应用程序中使用它来配置SSL上下文。 Spray有非常好的文档和大量示例其中一个示例SslConfiguration 我们可以用来配置KeyManager TrustManager和SSLContext 。 trait SslConfiguration {// If there is no SSLContext in scope implicitly, the default SSLContext is // going to be used. But we want non-default settings so we are making // custom SSLContext available here.implicit def sslContext: SSLContext {val keyStoreResource /sample-https-server.jksval password change-me-pleaseval keyStore KeyStore.getInstance(jks)keyStore.load(getClass.getResourceAsStream(keyStoreResource), password.toCharArray)val keyManagerFactory KeyManagerFactory.getInstance(SunX509)keyManagerFactory.init(keyStore, password.toCharArray)val trustManagerFactory TrustManagerFactory.getInstance(SunX509)trustManagerFactory.init(keyStore)val context SSLContext.getInstance(TLS)context.init(keyManagerFactory.getKeyManagers, trustManagerFactory.getTrustManagers, new SecureRandom)context}// If there is no ServerSSLEngineProvider in scope implicitly, // the default one is going to be used. But we would like to configure// cipher suites and protocols so we are making a custom ServerSSLEngineProvider// available here.implicit def sslEngineProvider: ServerSSLEngineProvider {ServerSSLEngineProvider { engine engine.setEnabledCipherSuites(Array(TLS_RSA_WITH_AES_128_CBC_SHA))engine.setEnabledProtocols(Array( TLSv1, TLSv1.1, TLSv1.2 ))engine}} } 这里有几点要强调。 首先使用以前创建的我们自己的密钥库为方便起见我们将其存储为类路径资源 val keyStoreResource /sample-https-server.jks val password change-me-please 另外我们仅配置TLS TLS v1.0 TLS v1.1和TLS v1.2 不支持SSLv3 。 除此之外我们仅启用一种密码 TLS_RSA_WITH_AES_128_CBC_SHA 。 这样做主要是为了说明因为在大多数情况下可以启用所有受支持的密码。 engine.setEnabledCipherSuites(Array(TLS_RSA_WITH_AES_128_CBC_SHA)) engine.setEnabledProtocols(Array( TLSv1, TLSv1.1, TLSv1.2 )) 这样我们就可以创建一个真正的HTTPS服务器了这要归功于Spray框架只有几行 class HttpsServer(val route: Route RestService.defaultRoute) extends SslConfiguration {implicit val system ActorSystem()implicit val timeout: Timeout 3 seconds val settings ServerSettings(system).copy(sslEncryption true)val handler system.actorOf(Props(new RestService(route)), name handler)def start(port: Int) Await.ready(IO(Http) ? Http.Bind(handler, interface localhost, port port, settings Some(settings)), timeout.duration)def stop() {IO(Http) ? Http.CloseAllsystem.stop(handler)} } 任何根本不执行任何操作的HTTPS服务器不是很有用。 这就是路由属性发挥作用的地方使用Spray路由扩展我们将映射或路由传递给HTTP服务参与者 RestService 直接处理请求。 class RestService(val route: Route) extends HttpServiceActor with ActorLogging {def receive runRoute {route} } 使用默认路由就是 object RestService {val defaultRoute path() {get {complete {OK!\n}}} } 基本上这就是我们所需要的我们的HTTPS服务器已准备好进行测试 运行它的最简单方法是使用Scala应用程序。 object HttpsServer extends App {val server new HttpsServerserver.start(10999) } 尽管是用Scala编写的但我们可以轻松地将其嵌入到任何Java应用程序中对于Java开发人员来说使用一些非标准的命名约定例如 public class HttpsServerRunner {public static void main(String[] args) {final HttpsServer server new HttpsServer(RestService$.MODULE$.defaultRoute());server.start(10999);} } 一旦启动并运行最简单的方法是sbt run 就可以从浏览器或使用curl命令行客户端访问我们简单的HTTPS服务器的公开默认路由 -k命令行参数关闭SSL证书验证 $ curl -ki https://localhost:10999HTTP/1.1 200 OK Server: spray-can/1.3.3 Date: Sun, 04 Oct 2015 01:25:47 GMT Content-Type: text/plain; charsetUTF-8 Content-Length: 4OK! 或者可以将证书与curl命令一起传递以便进行完整的SSL证书验证例如 $ curl -i --cacert src/main/resources/certificate.crt https://localhost:10999HTTP/1.1 200 OK Server: spray-can/1.3.3 Date: Sun, 04 Oct 2015 01:28:05 GMT Content-Type: text/plain; charsetUTF-8 Content-Length: 4OK! 一切看起来不错但是我们可以使用HTTPS服务器作为集成测试套件的一部分来验证/存根/模拟例如与第三方服务的交互吗 答案是肯定的这要归功于JUnit规则。 让我们看一下HttpsServerRule的最简单实现 class HttpsServerRule(BeanProperty val port: Int, val route: Route) extends ExternalResource {val server new HttpsServer(route)override def before() server.start(port)override def after() server.stop() }object HttpsServerRule {def apply(port: Int) new HttpsServerRule(port, RestService.defaultRoute);def apply(port: Int, route: Route) new HttpsServerRule(port, route); } 我们默认实现的JUnit测试用例使用了出色的RestAssured库该库提供了Java DSL可轻松测试REST服务。 public class DefaultRestServiceTest {Rule public HttpsServerRule server HttpsServerRule$.MODULE$.apply(65200);Testpublic void testServerIsUpAndRunning() {given().baseUri(https://localhost: server.getPort()).auth().certificate(/sample-https-server.jks, change-me-please).when().get(/).then().body(containsString(OK!));} } 可以肯定的是您无法对默认实现执行任何操作因此提供自定义选项是必须的选择。 幸运的是我们很早就通过接受路线来解决了这一问题。 object CustomRestService {val route path(api / user / IntNumber) { id get {complete {ab.com}}} } 这是一个测试用例 public class CustomRestServiceTest {Rule public HttpsServerRule server HttpsServerRule$.MODULE$.apply(65201, CustomRestService$.MODULE$.route());Testpublic void testServerIsUpAndRunning() {given().baseUri(https://localhost: server.getPort()).auth().certificate(/sample-https-server.jks, change-me-please).when().get(/api/user/1).then().body(containsString(ab.com));} } 事实证明创建完整的HTTPS服务器一点也不难而且一旦您知道执行此操作的正确工具它就会变得非常有趣。 Spray框架是那些魔术工具之一。 你们中许多人都知道 Spray将被Akka HTTP取代 Akka HTTP最近已经发布了1.0版本但目前缺乏很多功能包括HTTPS支持这使Spray作为可行的选择。 完整的项目可以在Github上找到 。 翻译自: https://www.javacodegeeks.com/2015/10/creating-sample-https-server-for-fun-and-profit.htmlspark在服务器运行示例
http://www.huolong8.cn/news/121774/

相关文章:

  • 网站建设 不需要见面网站建设要注意些什么
  • nas可以做视频网站吗wordpress 仿微信主题
  • 网站所有权问题湛江网络
  • 微信网站后台功能芙蓉建设官方网站
  • 上饶网站设计公司施工企业法定条件
  • 注册网站会员会泄露信息吗商业网站平台
  • 文件外链网站html标签
  • 微网站免费软件建设部标准规范网站
  • 网站ui设计用什么软件做微信公众号和网站建设
  • 网站模板 扁平化一个网站推广
  • 潍坊定制网站搭建湖南汽车软件网站建设
  • 用html5制作个人网站莱芜百姓网
  • 东莞建设网站制作电商平台推广方式有哪些
  • 网站建设一般多少钱比较合适微信小商城怎么开通
  • 高校网站建设需求分析报告325建筑人才网招聘
  • wordpress 手机自适应百度seo收录软件
  • 淄博网站建设公司有多少家平顺网站建设
  • 佛山做网站制作建设电子商务网站策划书
  • 营销型网站建设区别网站开发语言在线检测
  • 专为网站做点击量深圳响应式网站建设
  • 中国建设银行网站不好用有限责任公司设立条件
  • 找别人做网站怎么防止后门wordpress win主题
  • 网站 404 错误页面是否自动跳转深圳南山住房和建设局网站
  • 网站建设 招聘wordpress自动轮播图插件
  • 工程机械网站设计网站到期是否能换服务商
  • 宏大建设集团有限公司网站怎样咨询网络服务商
  • wordpress利用视频引流做seo网站标题重要吗
  • 网站空间购买流程1小时教你做出个人网页
  • 廉政网站 建设需求上海网页设计师培训
  • 自己怎么在电脑上做网站易名域名交易