Citrix Remote PowerShell SDK error: “Could not establish trust relationship for the SSL/TLS secure channel with authority ‘localhost’.”

If you see the following error when trying to run cmdlets from the Citrix Remote PowerShell SDK

Check and make sure you are running PowerShell in its 64-bit flavour, and not 32-bit (x86).

WTF?

I had this issue recently when automating some tasks with Jenkins talking to Citrix Cloud, using the Citrix Remote PowerShell SDK:

On the same host as Jenkins, if I ran a PowerShell shell, and ran the exact same script, it’d work fine.

If I ran it in Jenkins, it would fail with an error like this:

Root Cause

The root cause is there’s something up with 32-bit PowerShell and the Citrix Remote PowerShell SDK.

Jenkins runs the 32-bit version of PowerShell because Jenkins itself is 32-bit. The reason the script worked in a PowerShell shell on the Jenkins host, was because the default on Windows is 64-bit PowerShell. As soon as I forced PowerShell 32-bit, I could reproduce the problem.

The Fix

The fix is to force Jenkins to use PowerShell 64-bit. There’s two options I found:

  1. You can workaround it with some good tips here: https://adamtheautomator.com/jenkins-powershll-64bit/#method-3-using-the-sysnative-powershell
  2. Or you can fix it fully by making Jenkins run on 64-bit Java: https://stackoverflow.com/questions/28331924/jenkins-powershell-plugin-is-running-32-bit-powershell-and-i-need-64bit

Context is Queen

Want to improve your workplace communication skills, especially when working with other teams?

Give context.

Why give context?

Context helps your colleagues:

  1. Understand where you’re coming from / viewing things from.
  2. Understand who you are, and what you’re trying to achieve (your overall project, not this specific request)
  3. Helps remove assumptions. Teams often have their own dialects, and your request may mean something entirely different to them. Giving context helps them understand if there might be other dialects in play.
  4. Saves them time in “back and forth” clarifying questions, which, if the teams are remote, can take days.

Context helps you too:

  1. It saves you time in the long run – you’ll reduce the amount of “back and forth” while the receiving party tries to figure out exactly what you need.
  2. You might not actually need the thing, or need to do the thing. The team you’re asking may already have done something that can help you. But if you just ask for “$thing” you’ll never know, because they don’t know your project/goal!

A worked example

Here’s an example I used on Twitter recently:

Bad: “I need $thing”

Good: “I’m from $group. I’m trying to help $team with $companyGoal, to do $workItem, and need help with $thing”

This difference this makes can be stark, and it usually only takes a few minutes more:

Compare

I need a new SSL certificate

against

I’m from the web applications team. Our SSL certificate will run out soon (we’re trying to automate renewals but we’re not there yet), and I need the new cert to prevent our web app from going offline next week. Can you help please?

If I received the first request. I give them the cert.

If I receive the second request, I can tell them all about the solution our team developed to help developers with certificate management and auto renewals!

 

So please, do yourself, and your colleagues a favour – give context! 🙂

A quick Citrix microapp hack to get notifications when there’s a Citrix Security Bulletin

Credit to Gabe Carrejo and the Patrick Quinlan for their work on this.

It’s possible to use the Citrix Support Security Bulletin RSS feed with Citrix microapps to notify you (or a group) when there’s a new Security Bulletin from Citrix

Rough Steps:

  1. Copy this RSS URL: https://support.citrix.com/feed/products/all/securitybulletins.rss
  2. If you want to narrow the feed down to a specific product or category, look for the category tags in the RSS feed and add them when you add the RSS integration in step 3
    • Some examples, in case they help:
  3. Follow the RSS microapp guide here and replace the blogs RSS URL with the Security Bulletin URL: https://kabri.uk/2019/12/18/building-a-simple-citrix-microapp-that-shows-blog-posts-from-a-wordpress-rss-feed/

Of course, you don’t need to use microapps to get Security Bulletins (you could just use an RSS reader) but it’s a very neat use case – and combined with Push Notification with Workspace, means you get a notification to your phone when there’s a new Bulletin. Great idea, Gabe!

A full list of feeds available from Citrix Support are here: https://support.citrix.com/feeds

Life stuff: Things I’ve learned about dealing with sweat

I’ve acquired some hilarious pairs of oxymoronic genetic traits. My most favourite is probably that I’m built for sports, but sweat like crazy. Like, ridiculous amounts. To the point that my “sweat wicking” t-shirts wet out and end up slowing me down. Thanks, genes?

Anyway, this sweaty-ness is a pain outside of sports too – especially my arm pits. And I know this problem makes a lot of people self conscious, so here’s all the stuff I’ve learned about controlling it and dealing with it over the last decade or so.

One caveat here: This is what’s worked for me. It might not work for you. But, let’s try anyway…

Finding a strong / good enough antiperspirant

If you sweat a lot, like me, you need a specialist antiperspirant. And to be clear, Deodorant is not Antiperspirant. A regular deodorant will not stop you sweating.

Axe/Lynx, Sure, Mitchum, all the regular antiperspirant stuff, wasn’t strong enough to stop my super sweat. So I had to upgrade to something more specialist. Finding what worked for me took a lot of experimentation, so I’m sharing what worked (or didn’t) for me.

The strongest

The strongest/best I used was:

Both of these are available in the UK from pharmacists like Boots and Superdrug, and some supermarkets. However, while they worked awesome by stopping all my arm pit sweat, they ended up irritating my skin, to the point that I’d be in pain at night before I went to sleep. Your experience may differ, though (I hope it does!)

Finding balance

For the last 8 years or so, I’ve settled on the following two:

Every day:

  • Sure Maximum Protection. It comes in a 45ml size, and is available in both genders scents – and you can get it in regular UK supermarkets, so it’s easy to find. It’s strong enough to keep me mostly dry, but doesn’t irritate my skin. In the US, it’s called Degree Clinical Protection. I wish brands were consistently named across regions – it’d be so much easier to recommend things to fellow people on the internet 🙂

For super stressful times (like, if I need to speak at a major vendor conference…):

  • Triple Dry Roll-On. Specifically the roll on, not the sprays. This is stronger than the Sure Maximum Protect, but doesn’t irritate my skin as quickly as the Strongest ones I listed above.

Dealing with sweat on clothes

Sweat is a massive pain in the arse on clothes. Over time (and not even that long) bacteria builds up in the arm pit area and when you do sweat, your clothes (and you) smell. If I washed my clothes on a hot wash to try to combat this, they just end up looking faded. Damned if you wash at low temperature, damned if you wash at a high temp 😉

When I used to wash at low temps, the build up of bacteria led to me putting a lot of my clothes in the “re-purposing” bins where they’re converted into rags, because it’s not fair to donate them to charity and there’s no way I’d just throw clothes out into the general rubbish/land fill. But to be more environmentally friendly, I wanted them to last longer.

Here’s some things that do work pretty well for me

Sports Clothing

Polyester and other synthetic fabrics which are great for sweat wicking, also harbour different, smellier bacteria than say, cotton. When the bacteria get wet, that’s when the smells appear again 🙁

The best ways I’ve found to prevent or remove odour from my sports clothing includes:

Removing smells

  • White vinegar: Soak your clothes in a 200ml of white vinegar + 2litres of warm water (~40c is fine) over night. Then wash normally – but do not use fabric conditioner (more on that shortly). Don’t worry, the vinegar smell won’t stay 🙂 This works especially well for smelly football training bibs!
  • I’ve also experimented with using Dettol Anti Bacterial Laundry Cleanser (available from most supermarkets in the UK). I think it’s meant for washing baby clothes, but it seems to kill the arm pit sweat bacteria pretty well. I’ve only been using this for about 6 months or so. You just put it in the fabric softener compartment in your washing machine as part of a normal wash (but again, don’t use fabric softener as well!)

Preventing smells

  • Do not use fabric conditioner. Do not, ever, ever-ever-ever! use fabric conditioner/softener on synthetic clothing, including sports clothes. It makes them smell worse, and it prevents their sweat wicking abilities from working.
  • Use whatever detergent you need – my preference is liquids, and especially liquid laundry soap, as it washes out easily. I find that powders tend to stay in the fabric and stiffen the fabrics over time (again, your experience may differ), so I just use liquids now.

 

Cotton clothing

Cotton for me tends to take longer to start smelling than synthetic fabrics, but they do often end up smelling.

Consider wearing white?

Curiously, I’ve observed that my white t-shirts don’t seem to smell in the arm-pit area even after a long time, and I wonder if there’s some different/special in laundry detergents meant for whites that causes that? Maybe there’s bleach in there or something that just totally nukes the bacteria.

Removing/preventing smells:

T-shirt armpit strategies:

  • Using Dettol Anti Bacterial Laundry Cleanser: I turn my cotton t-shirts inside out, and using a cheap spray bottle with 50% water and 50% Dettol laundry cleanser, spray the arm pit area just before running my washing load.
  • White vinegar: Same as above, 50/50 mix with water, spray on arm pits – but this time, leave it an hour or so before washing. It just seems to take a bit longer, probably because it seems more “gentle” than Dettol.

After doing either of the above, wash normally, and with cotton you can use fabric conditioner (indeed, you should! or your clothes won’t last as long in my experience). Spraying my arm pits does seem to be slowing down how quickly my cotton t-shirts smell – but I’ve only been experimenting for about 6 months.

Don’t soak coloured clothing overnight in white vinegar: it’ll fade the clothes, in my experience.

Dealing with where the sweat goes next

Just because you stop sweating in one place, doesn’t mean you stop it altogether. Nope. It just pops up in other places instead! Yay.

Groin rub 😐

Some additional sweat, plus my genetic thunder thighs, means I tend to get a groin rub chafing rash thing going on – especially as I cycle to work and tend to walk a lot at weekends. To combat that, I use Udderly Smooth Chamois Cream, daily. It’s amazing, and very cost-effective. Unfortunately, I haven’t seen it in supermarkets, but it’s readily available on Amazon and places like cycling stores online. It’s available in the US and the UK from the looks of things.

If I can’t get Udderly Smooth, I use Lanacane Anti-Chafing Gel. It’s good (and a good size for travel) but is less cost-effective, in my experience.

Wet snowboard boots

When I snowboard, my boots used to get super wet. I assumed they were leaking, but nope! It was my feet sweating. So now when I snowboard I use a standard antiperspirant spray on the soles of my feet and since I started doing this my feet are much drier – yay!

Sweaty feet, trainers, shoes

I rotate footwear daily. I almost never wear the same pair of trainers every day – which lets them air out between days. I’ve found this stops my shoes/trainers smelling.

K, I’m done

I think that’s it. Hopefully some (all?) of this helps. If it does, let me know. And if you have other ways of coping with sweat, let me know too – I’m always happy to learn new stuff! 🙂

Building a simple Citrix microapp that shows blog posts from a WordPress RSS feed

Scope

This post will cover how to setup a simple microapp that anyone with access to the Citrix microapps service can build, using public URLs, with no authentication requirements. We’ll be using the RSS integration to talk to a WordPress RSS feed and build a microapp from that.

Here’s roughly how it’ll look in Workspace, when it’s finished:

Why bother?

I’ve spent the last few months learning about microapps, and implementing them into Citrix Engineering’s pre-release Workspace environments – and honestly, I wish I had a guide like this to follow when I first started. So here we are 🙂

My hope is that following this guide will help you get familiar with the concepts, before you dive into the heavier stuff, like accessing internal API endpoints for enterprise systems, or figuring out the details around Oauth 2.0 authentication.

By following this post you’ll learn:

  • How to add an Integration and a microapp
  • How to make changes to how a microapp displays data

What are we building?

We’ll build a Citrix Blog posts microapp, which uses the RSS Out-of-the-box integration to connect to the Citrix Blogs RSS feed, which happens to be in a WordPress format and:

  • Notifies Workspace when there’s a new blog post
  • Enables colleagues to view blog posts from Workspace
  • Allows colleagues to view a list of blog posts in a searchable table

Before you start

This guide assumes that you already have access to the Microapps service in your Citrix Cloud account. If you do not, you can request access to a Test Instance here: https://developer.cloud.com/citrix-workspace

First, familiarise yourself with the following microapps concepts by reading the documentation that covers Terminology

Specifically you’ll need to learn the meanings of:

  • Integration
  • Microapp
  • Notification
  • Page
  • Action

I’ll be using the above terms liberally, so knowing what they mean will help.

Let’s build it!

We’re going to:

  1. Add an RSS Integration to sync Citrix Blog posts
  2. Change the name of the microapp so it’s more intuitively named in Workspace Actions
  3. Change the sort order of Blog posts to: Date, Descending
  4. Change the Description field of the Item Detail page to show HTML content for prettier viewing
  5. Set the Title of the blog post to be in the header of the page
  6. Add a “View Post” button, that goes to the Blog Post online
  7. Setup the Synchronization Schedule
  8. Add Subscribers to the microapp (so they can see Notifications and Actions)

Add the Integration

Go to the Microapps Admin page, and choose “Add New Integration”

If asked, you want to use a Citrix-provided template

Choose the RSS Integration

Give the Integration a name, such as Citrix Blogs (RSS), and enter the URL to the WordPress RSS feed. In this example, for Citrix Blogs, the URL to the RSS feed is: http://feeds.feedblitz.com/citrix&x=1

You’ll then be taken to the Microapps list of integrations, and you’ll see the new integration. Inside, it’ll already have a microapp configured called “Items”, and you’ll see it has Synchronized. We’ll be modifying this microapp to make it fit our needs.

Because the RSS Integration is deliberately generic – we need to make a number of tweaks to make the Blog microapp nicer to use and look at.

Change the name of the Microapp

We change the name of the microapp, because this is how it appears in the Actions pane in Workspace. If we keep it as “Items”, its naming isn’t particularly user friendly. In our pre-release environments, we rename this microapp to Citrix Blogs, so people will know what they get when they click the Action.

To change the Microapp name:

  1. Click on “Items”
  2. Go to Properties
  3. Change the App Name, and the App Description to something more meaningful such as “Citrix Blogs” and “Shows posts from Citrix Blogs”
  4. Click Save

Here’s a comparison of how they’d look in Workspace. I much prefer it to say Citrix Blogs. rather than Items 🙂

Change the sort order of Blog posts to Date, Descending

Out of the box, the Items table is not sorted by Date. Let’s fix that so it’s suitable for a Blog post list that shows the latest posts at the top of the table.

In the Citrix Blogs microapp, click on Pages, then click on Items

Click the Table, so that it’s highlighted (a blue x will appear in the top-right of the table). Then click Set Order, or Edit Order, under Data Order

  1. Set the Order by to: items, published_at, Descending.
  2. Click Save

Bonus points: Change the table Label from Items to Blog Posts. Again, this just makes it look nicer.

Displaying HTML content from the blog posts

Just FYI: This HTML component is in the product at GA because I had issues with showing blog content in the microapp page, and the Product Management team did amazing work to accelerate their plans for this functionality. It sounds small, but it’s just one tangible example of what I (and my team) do inside Citrix – we use the product, we feedback, we help make things better

Out of the box, the RSS Integration shows raw text. It works really well for many kinds of feeds/data, but for some RSS feeds, the fields have HTML embedded in them.

Out of the box, it looks like this:

And we’re going to tidy it up so it looks like this:

Add the blog title to the header of the Page

Set the Blog Title as the page title and remove the existing title. This makes the title look much nicer:

  • Go to Pages, then click on Item Detail
  • Click the Back button in the Builder viewer
  • In the right-hand pane, set the Title Template from blank, to {{title}}
  • Click the Title text in the main body of the Builder viewer, and delete it (because the title is now shown at the top of the page)
  • This will now show the Blog post title in the Page header (and looks much nicer)

Replace the Description default Test component, with the HTML Content component:

  • Drag the HTML Content component so it goes above where the current Description text component is
  •  
  • Set the Label (you can make it blank – it’s not required) and set the Data Table to “Items” and the Data column to “Description”
  • Delete the other Description component, by clicking on it, then clicking the X in the top=right hand corner.

It’ll then populate the HTML component and look much nicer!

Personally, I remove the Categories Table, as it serves no purpose in this view. Click it and remove it with the X in the top-right corner of the Categories Table.

Add a button to link to the Blog Post

Finally, let’s add a button to link to the Blog Post. This is a nice way to allow people to open the blog post if they want to read more than just the lede.

Drag the “Button” button to the bottom of the page:

Then, set the button up like so…

Change the Button Label from Button, to “View Post” (or whatever you’d like it to say :))

Now we setup the link part.

Click Actions, on the right hand side:

Then on the Drop down, choose “Go to URL”

Expand the Goto URL, then click on Insert Variable

From the dropdown, choose “url” and click Insert:

You’ll then see the field populated with {{url}}. This will insert the Blog Post’s URL into the button, and will launch the site when clicked.

Preview the microapp to see your handiwork:

Looks good!

Set a Synchronization Schedule

Now we’ve made the microapp, with its pages, we should set a Synchronization Schedule.

The schedule is up to you and the feed you’re pulling in. For Citrix Blogs, we set this to once every hour, which is a good balance between keeping things up to date, but not hitting the website too much with requests.

After a sync happens, if a new blog post entry is found a notification is sent to Subscribers to that microapp, and it appears in the Workspace feed (and, if enabled, a Push Notification to the person’s device with Citrix Workspace app, too)

Please note: The first time you sync – no Notifications will be generated. So when you look in your feed, there won’t be any Notifications yet. This is because notifications are generated the next time a sync occurs and there’s new blog posts. The first sync will simply load up the microapps cache. You’ll need to wait for a new blog post to be posted into the RSS, and for a sync to happen, for a notification to be generated.

You set the Synchronization by going to the Microapp Integrations page, clicking the three dots next to the integration and choosing Synchronization

Adding Subscribers to the microapp

The final step of this process: Giving people access to the microapp itself. Without being granted this, people won’t see the microapp, or the notifications

To give people access, Click the three dots next to the microapp, and choose Subscriptions

In the example below, I’m showing that you can add Security Groups, as well as individual users. This can help you test, and gradually roll out the microapp in a live environment in phases, to help ensure quality and user acceptance.

Pat yourself on the back

You just made your first microapp!

You learned how pages work, how to modify those pages if you need to, you learned about changing and adding variables to buttons and components, how to order data in tables, add buttons that link somewhere else, and finally how to add subscribers to a microapp, schedule synchronizations and how to preview it.

There’s a lot to take in, but hopefully running through this will make it easier on you when you come to do more heavy-weight microapps that might need things like authentication, and on-premises connections with the Connector Appliance.

Happy microapping 🙂